我必须在同一页面中插入2个表单:
1)登记表
2)登录表格
所以如果我在views.py中使用它:
if request.method == 'POST':
form = registrationForm(request.POST)
if form.is_valid():
form.save()
return render_to_response('template.html', {
'form': form,
})
通过提交两种表格中的一种,我会收到错误。
如何区分视图中提交的2个表单?
答案 0 :(得分:5)
您也可以这样做,
<form method='POST'>
{{form1.as_p}}
<button type="submit" name="btnform1">Save Changes</button>
</form>
<form method='POST'>
{{form2.as_p}}
<button type="submit" name="btnform2">Save Changes</button>
</form>
的 CODE 强> 的
if request.method=='POST' and 'btnform1' in request.POST:
do something...
if request.method=='POST' and 'btnform2' in request.POST:
do something...
答案 1 :(得分:3)
您可以在同一页面上提交两个表单...但每个表单调用的操作(即处理每个表单的视图函数)应该可能不同。这样,您就不必尝试区分表格。
e.g。在您的页面上:
<form id="login_form" action="{% url app.views.login %}" method="post">
...form fields...
</form>
<form id="registration_form" action="{% url app.views.registration %}" method="post">
...form fields...
</form>
因此,在views.py中,您将拥有一个login()视图函数和一个registration()视图函数,它将处理每个表单。
答案 2 :(得分:2)
您也可以将两个表单发布到同一个网址:
模板中的表单是这样的:
<form method="post" action="/profile/">
{% for field in firstform %}
<div class="mb10">
<div class="fl desc">{{ field.label_tag }}<br />
<div class="fr">{{ field }}{{ field.errors }}</div>
<div class="clear"></div>
</div>
{% endfor %}
{% for field in secondform %}
<div class="mb10">
<div class="fl desc">{{ field.label_tag }}<br /><</div>
<div class="fr">{{ field }}{{ field.errors }}</div>
<div class="clear"></div>
</div>
{% endfor %}
<a class="submit fr" href="#""><img src="{{ MEDIA_URL }}img/save.png" /></a>
</form>
并在视图中像这样处理它们:
if request.method == 'POST':
firstform = ProfileForm(request.POST, request.FILES, instance=profile)
secondform = UserForm(request.POST, instance=request.user)
然后使用firstform&amp; secondform进行处理。
答案 3 :(得分:1)
您可以对不同的网址进行注册和登录POST,这样每个POST都将由相应的视图处理
答案 4 :(得分:1)
您可以将两个表单发布到同一个URL并使用名称设置为登录或注册的隐藏输入,并在服务器上对其进行排序
答案 5 :(得分:1)
<form action="Page where u want to post the data" method="post">
<input name="edit" type="submit" value="Edit Client">
<input name="delete" type="submit" value="Delete Client">
</form>
只需为按钮指定不同的名称。
if request.method == "POST" and 'edit' in request.POST:
/ Do /
if request.method == "POST" and 'delete' in request.POST:
/Do /