如何将从表单提交中检索的参数作为参数传递给django中的函数

时间:2012-02-27 07:37:22

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

我刚开始学习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。如何实现这一目标。

2 个答案:

答案 0 :(得分: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)

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

答案 1 :(得分:1)

您无需将它们传递到视图中。您想将它们传递给表单。你已经这样做了:

form = UserForm(request.POST)

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