我有一个可以提交到有不同的效果一个Django项目,在一个页面上,有多种形式(在不同的标签)。 在所有的情况下,我希望用户被重定向回到同一页面,所以我在视图中使用提交表单,然后重定向到原始页面的模式。 在至少一个情况下,两个的形式之间的唯一区别是提交按钮的值。
我认为我的代码(这是第一次我的视图函数访问request.POST
):
if request.POST['submit']=='Add':
#code to deal with the "Add" form
在模板中,第一种形式有一个提交按钮状
<input type="submit" value="Add">
我认为这会工作,但是当我提交表单,我在从上述观点线得到一个错误:
键'提交'未找到的<QueryDict: {u'clientyear': [u'2012'], u'csrfmiddlewaretoken': [u'be1f2f051f09f6ab0375fdf76cf6a4d7'], u'ben': [u'123405']}>
显然,这不具有'submit'
键或用对应的值提交按钮,我点击任意键。 所以,既然这是不行的,如何可以访问提交按钮的值或者告诉它的形式已经提交?
Submit
的HTML表单结构......必须按如下方式使用表单对象的名称属性...在你的模板:
<form>
...
<input type="submit" name="list" value="List Objects" />
</form>
<form>
...
<input type="submit" name="do-something-else" value="Do Something Else" />
</form>
您认为:
if 'list' in request.POST:
# do some listing...
elif 'do-something-else' in request.POST:
# do something else
有一点要记住,以防止混淆。 该name
提交按钮不会显示如果只在形式单一按钮。
#template.html
<form action="..." method="post">
<input type="submit" name = "first_button" value="Add">
</form>
#view.py
...
'first_button' in request.POST #False
#template.html
<form action="..." method="post">
<input type="submit" name = "first_button" value="Add">
<input type="submit" name = "second_button" value="Remove">
</form>
#view.py
...
'first_button' in request.POST #True if you clicked on that button