我有一个登录模板,我想在 Django 中使用该模板传递"Invalid credentials"消息



我正在使用以下代码渲染" login.html"的代码,并将消息发送到模板中,但它不起作用。

 messages.warning(request, 'Wrong Credentials.')
 return HttpResponseRedirect(reverse('login') ) 

views.py:

       from django.contrib import messages
       from django.http import HttpResponseRedirect
       from django.core.urlresolvers import reverse
       if access_token:
           "do something"
       else:
           messages.error(request,"Wrong credentials")
           return HttpResponseRedirect(reverse(login))

login.html:

          {% if messages %}
            {% for msg in messages %}
                  <div class="alert alert-{{msg.tags}} page-alert" style="text-align:center">
                  <button type="button" class="close" data-dismiss='alert'><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
                 {{msg}}
                  </div>
            {% endfor %}
          {% endif %} 

如果要将参数添加到 reverse,请像这样使用

return HttpResponseRedirect(reverse('login',kwargs={'key','value'}))
# the kwargs arguments should be set up in your url patterns

但是,就您而言,我不确定这是您想要的。您无需通过参数重定向到URL。只需使用 HttpResponseRedirect(reverse('login'))或更高的 redirect('login_name'),其中login_name是您的URL的名称。

将消息发送到模板

messages.warning(request, 'Wrong Credentials.')
# another way
messages.add_message(request,messages.WARNING,'Wrong Credentials.',extra_tags='more_tags_here')

从模板中获取消息更多信息

使用bootstrap

设计
{% if messages %}
    {% for msg in messages %}
        <div class="alert alert-{{msg.tags}} page-alert" style="text-align:center">
            <button type="button" class="close" data-dismiss='alert'><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
            {{msg}}
        </div>
    {% endfor %}
{% endif %} 

创建消息时,它将使用您使用的任何存储存储存储。默认的FallbackStorage后端将消息存储在cookie或会话中。

因此,当您尝试重定向到新URL时,您不需要包含任何上下文。您可以将代码更改为:

messages.warning(request, 'Wrong Credentials.')  # No need to assign result to a variable
return HttpResponseRedirect(reverse('login') ) 

您可以使用redirect快捷方式简化此内容:

from django.shortcut import redirect
messages.warning(request, 'Wrong Credentials.')
return redirect('login')

相关内容

最新更新