我刚开始学习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。如何实现这一目标。
答案 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也是一个好主意。