如何在Django中的同一页面上插入2个不同的表单

xRo*_*bot 4 django django-forms

我必须在同一页面中插入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,
})
Run Code Online (Sandbox Code Playgroud)

提交两种表格中的一种,我会收到错误.

如何区分视图中提交的2个表单?

kaf*_*hau 5

您可以在同一页面上提交两个表单...但是每个表单调用的操作(即将处理每个表单的视图函数)可能应该不同。这样,您就不必尝试区分这些形式。

例如在您的页面上:

<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>
Run Code Online (Sandbox Code Playgroud)

因此,在views.py 中,您将有一个login() 视图函数和一个registration() 视图函数来处理每个表单。


小智 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>
Run Code Online (Sandbox Code Playgroud)

if request.method=='POST' and 'btnform1' in request.POST:
    do something...
if request.method=='POST' and 'btnform2' in request.POST:
    do something...
Run Code Online (Sandbox Code Playgroud)


dra*_*oon 1

您可以对不同的网址进行注册和登录 POST,以便每个 POST 将由相应的视图处理