如何将表单提交的参数作为参数传递给函数django
问题描述:
我刚开始学习django。我从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。这怎么能实现。
答
你在这里问的是如何在随后的视图中获取保存的user
的值。
好吧,这很简单。一旦用户被保存,它(像任何模型实例)获得一个pk
值。您可以在后续视图的网址中使用它。
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。
答
您不需要将它们传递到视图中。你想把它们传递给一个表单。并且您已经在执行此操作:
form = UserForm(request.POST)
您将POST数据传递到表单中。如果您想对此数据进行操作,请在表单验证后使用form.cleaned_data
字典。阅读docs也是一个好主意。
Acutally我的问题是我如何检索提交的数据在另一个功能不在相同的功能。请注意,作为回报,HttpResponseRedirect(“/ contact/create_db”) urls.py中的create_db将使用另一个名为do_create的函数。它在这个do_create函数中,我将检索我提交的数据。送我的英语 – Inventillect 2012-02-27 08:50:39
@ user1053786你不需要在这里重定向。用'form.save'方法来保存东西。 – DrTyrsa 2012-02-27 08:54:35