我想知道如何在用户登录后显示问候语“欢迎用户,您已登录”,并且该信息应在5秒内消失。
该消息将在用户成功登录后显示一次,但在同一会话期间连续访问主页时不再显示。因为我在home.html的会话中使用了用户名。
答案 0 :(得分:7)
使用django's messaging framework和wrap the login view:
from django.contrib import messages
from django.contrib.auth.views import login
def custom_login(request,*args, **kwargs):
response = login(request, *args, **kwargs):
if request.user.is_authenticated():
messages.info(request, "Welcome ...")
return response
并在您的模板中某处:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
以及一些jquery to hide any message after 5 seconds:
$(document).ready(function(){
$('.messages').delay(5000).fadeOut();
});
答案 1 :(得分:6)
请注意,您可以使用user_logged_in
信号在用户登录时添加消息,而不是包装登录视图,就像他的答案中的pastylegs一样。
# include this code somewhere it will be imported when the application loads
from django.contrib import messages
from django.contrib.auth.signals import user_logged_in
def logged_in_message(sender, user, request, **kwargs):
"""
Add a welcome message when the user logs in
"""
messages.info(request, "Welcome ...")
user_logged_in.connect(logged_in_message)
然后以与pastyleg的答案相同的方式显示消息并使用javascript。