我在一个模板中有两种完全不同的表格。如何在一个视图中处理它们?如何区分提交了哪些表格?我怎样才能使用前缀来完成呢?或者也许最好编写单独的视图?
问候
克里斯
chriss
问问题
7710 次
3 回答
5
就个人而言,我会使用一个视图来处理每个表单的 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(),
})
...但再一次,我认为每个表单一个视图(即使视图只接受 POST)比尝试执行上述操作更简单。
于 2008-12-25T13:23:25.330 回答
4
就像ayaz说的,你应该给表单提交按钮提供唯一的名称
<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:
...
于 2008-12-26T07:02:48.203 回答
0
如果这两种形式是完全不同的,用两种不同的观点来处理肯定是没有坏处的。否则,您可以使用zacherates提到的“隐藏输入元素”技巧。或者,您总是可以给每个submit
元素一个唯一的名称,并根据该名称在视图中区分提交的表单。
于 2008-12-25T14:42:22.783 回答