Python django表单视图是否显示错误

Python django表单视图是否显示错误,python,django,forms,Python,Django,Forms,我正在使用Django框架做一个小的个人项目,在使用Django表单创建登录视图时,我遇到了一个问题 我很难在模板中显示表单错误消息,我在视图中找到了原因 这是显示错误消息的视图 def login_view(request): if request.method == 'POST': form = LoginForm(request.POST) if form.is_valid(): form.login(request) return redi

我正在使用Django框架做一个小的个人项目,在使用Django表单创建登录视图时,我遇到了一个问题

我很难在模板中显示表单错误消息,我在视图中找到了原因

这是显示错误消息的视图

def login_view(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        form.login(request)
        return redirect('/')
else:
    form = LoginForm()
context = {
    'form': form,
}
return render(request, 'member/login.html', context=context)
def login_view(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        form.login(request)
        return redirect('/')
form = LoginForm()
context = {
    'form': form,
}
return render(request, 'member/login.html', context=context)
另一个未显示错误消息的视图

def login_view(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        form.login(request)
        return redirect('/')
else:
    form = LoginForm()
context = {
    'form': form,
}
return render(request, 'member/login.html', context=context)
def login_view(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        form.login(request)
        return redirect('/')
form = LoginForm()
context = {
    'form': form,
}
return render(request, 'member/login.html', context=context)
这是我的模板

<form action="{% url 'login' %}" method="post">
{% csrf_token %}
{{ form.username}}
{{ form.password }}
{{ form.non_field_errors }}
<button id="login-btn" class="btn btn-default" type="submit">login</button>

{%csrf_令牌%}
{{form.username}
{{form.password}}
{{form.non_field_errors}}
登录

区别在于是否在视图中使用
else
短语。 我认为无论是否使用
else
短语,这两种观点在逻辑上都有相同的结果。。。我不理解这两种观点的不同

有什么线索可以理解这两种观点的不同之处吗


谢谢

通过在末尾定义表单,您正在覆盖POST表单。首先装入空白表格< /p>
def login_view(request):

    form = LoginForm()
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            form.login(request)
            return redirect('/')

    context = {
        'form': form,
    }
    return render(request, 'member/login.html', context=context)

如果我自己找到了答案,我该怎么办?如果表单有错误,is\u valid返回False并且
LoginForm(request.POST)
是有界表单。在第一个视图中,
render
是使用
LoginForm(request.POST)
返回的,该表单是有边界的,但在第二个视图中,使用无边界的新表单返回render。