我如何判断这两个表单中的哪一个是在Django中提交的

How can I tell which of the two forms is submitted in Django?

本文关键字:哪一个 提交 Django 表单 何判断 判断 两个      更新时间:2023-09-26

我的主页中有一个log_insign_up表单。默认情况下,log_in设置为显示,当用户单击注册按钮时,sign_up将显示。这两种切换取决于用户单击的按钮。

from django import forms
class LogInForm(forms.Form):
    pass
class SignUpForm(forms.Form):
    pass

两个窗体调用相同的视图-index_view()

你找错地方了。Django无法判断提交的表单,除非您在POST中提供一些信息。最好的位置是提交按钮,您可以像其他表单元素一样为其指定名称和值。

<form action="." method="POST">
    {{ login_form.as_p }}
    <input type="submit" name="login" value="login">
</form>
<form action="." method="POST">
    {{ signup_form.as_p }}
    <input type="submit" name="signup" value="signup">
</form>

在视图中,您所需要做的就是检查POST:中的输入

if 'login' in request.POST:
    # do something with login_form
else:
    # do something with signup_form

另一种方法是将GET参数添加到url并在视图中进行检查:

<form action="{% url index %}?action=login">

并且在视图中

def index_view(request):
    action = request.GET.get('action', '')
    if action == 'login':
        ...