如何在一页中显示多个 django 消息?

pay*_*ike 1 python forms django message

在我的主页中,我有一个登录表单和注册表单,我使用 form.is_valid() 来验证表单,

但不是

return render(request,'registration/login.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)

我用

messages.error(request, 'username or password wrong.')
return redirect('/')
Run Code Online (Sandbox Code Playgroud)

我这样做是因为在

return render(request,'registration/login.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)

form.is_valid() 失败后,刷新页面会导致弹出框说重新提交确认,我不想要这个,所以我使用第二种方法。

问题是有两种形式:登录和注册,我不能把错误信息放在一个地方,这会引起误导,那么如何在一个页面中显示两条信息?

Roh*_*han 6

您可以使用extra_tags消息框架中的消息来识别两个不同的消息。

例如,对于登录错误

messages.error(request, 'username or password wrong.', extra_tags='login')
Run Code Online (Sandbox Code Playgroud)

对于注册错误,

messages.error(request, 'username or password wrong.', extra_tags='signup')
Run Code Online (Sandbox Code Playgroud)

然后根据标签在模板中以适当的形式放置消息

{# login form #}
{%for message in messages %}
     {%if "login" in message.tags %}
          <p> {{message}} </p>   {# show login error message #}
     {%endif%}
{%endfor%}

{# signup form #}
{%for message in messages %}
     {%if "signup" in message.tags %}
          <p> {{message}} </p>   {# show signup error message #}
     {%endif%}
{%endfor%}
Run Code Online (Sandbox Code Playgroud)

更多参考添加额外的消息标签