如何在一个视图处理两种形式?
-
23-08-2019 - |
题
我有一个模板两个完全不同的形式。如何处理它们在一个视图?我怎样才能区分哪些的形式提交?如何使用前缀acomplish是什么?或者,也许这是最好编写单独的看法?搜索结果 至于结果 CHRISS
解决方案
就个人而言,我会使用一个视图来处理每个表单的POST。
在另一方面,可以使用指示使用了哪个形式的隐藏输入元件
<form action="/blog/" method="POST">
{{ blog_form.as_p }}
<input type="hidden" name="form-type" value"blog-form" /> <!-- set type -->
<input type="submit" value="Submit" />
</form>
...
<form action="/blog/" method="POST">
{{ micro_form.as_p }}
<input type="hidden" name="form-type" value"micro-form" /> <!-- set type -->
<input type="submit" value="Submit" />
</form>
使用的图像:
def blog(request):
if request.method == 'POST':
if request.POST['form-type'] == u"blog-form": # test the form type
form = BlogForm(request.POST)
...
else:
form = MicroForm(request.POST)
...
return render_to_response('blog.html', {
'blog_form': BlogForm(),
'micro_form': MicroForm(),
})
...但再一次,我想每个表单(即使该视图只接受帖)一个视图比试图做上述简单。
其他提示
像阿亚兹说,你应该给唯一的名称,形成提交按钮
<form action="." method="post">
......
<input type="submit" name="form1">
</form>
<form action="." method="post">
......
<input type="submit" name="form2">
</form>
#view
if "form1" in request.POST:
...
if "form2" in request.POST:
...
如果这两种形式是完全不同的,它肯定不会伤害有它们由两个不同的观点来处理。否则,您可以使用“隐藏的输入元素”伎俩的 zacherates 的已上眼。或者,你总是可以给每个submit
元素的唯一命名,并以何种形式的基础上,提交的观点分化。
不隶属于 StackOverflow