我正在使用以下代码渲染" 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')