【问题标题】:How to pass parameters retrieved from form submit as arguments to a function in django如何将从表单提交中检索到的参数作为参数传递给 django 中的函数
【发布时间】:2012-03-16 17:11:30
【问题描述】:

我刚开始学习 django。我从 django 模型创建了一个表单。单击提交按钮后,数据将存储在数据库中。现在我想要的是类似于下面给出的:

#view.py
def contact(request):
  if request.method == 'POST':
  form = UserForm(request.POST)
  if form.is_valid():
            user = form.save()
            return HttpResponseRedirect("/contact/create_db")

#urls.py
(r'^contact/$', views.contact),
(r'^contact/create_db$', views.do_create),

现在,当我在 views.py 中定义 do_create 函数时,我想像这样传递参数(用户表单的用户数据):

def do_create(request, password, dbname, admin_password, confirm_password, demo_data=False, language=None, **kw):

这可以使用 django.这怎么可能实现。

【问题讨论】:

    标签: django django-models django-forms django-views django-urls


    【解决方案1】:

    您不需要将它们传递到视图中。您想将它们传递到表单中。而你已经在这样做了:

    form = UserForm(request.POST)
    

    您将 POST 数据传递到表单中。如果您想对这些数据做一些事情,请在表单验证后使用form.cleaned_data 字典。阅读docs 也是一个好主意。

    【讨论】:

    • Acutally 我的问题是如何在另一个函数中检索提交的数据,而不是在同一个函数中。请注意,作为回报 HttpResponseRedirect("/contact/create_db") create_db in urls.py 将使用另一个名为 do_create 的函数。正是在这个 do_create 函数中,我将检索我提交的数据。对不起我的英语
    • @user1053786 这里不需要重定向。在form.save 方法中保存东西。
    【解决方案2】:

    您在这里要问的只是如何在后续视图中获取保存的user 的值。

    嗯,这很容易。保存用户后,它(与任何模型实例一样)将获得 pk 值。您可以在后续视图的 URL 中使用它。

    url(r'^contact/create_db/(?P<user_id>\d+)/$', views.do_create, 'do_create'),
    

    在contact:

    from django.shortcuts import redirect
    
    ...
    
    user = form.save()
    return redirect('do_create', kwargs={'user_id': user.pk})
    

    在do_create:

    def do_create(request, user_id):
        user = User.objects.get(pk=user_id)
    

    注意我将 URL 名称和参数传递到 redirect 的方式,而不是对 URL 进行硬编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 2014-08-09
      • 2013-01-27
      • 2016-09-22
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      相关资源
      最近更新 更多