django消息一旦登录

Raj*_*aji 2 django django-templates

我想知道如何在用户登录后显示问候语"欢迎用户,您已登录",并且它应该在5秒内消失.

该消息将在用户成功登录后显示一次,但在同一会话期间连续访问主页时不再显示.因为我在home.html的会话中使用了用户名.

Tim*_*ony 8

使用django的消息传递框架包装登录视图:

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
Run Code Online (Sandbox Code Playgroud)

并在你的模板中的某个地方:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

以及一些jquery在5秒后隐藏任何消息:

$(document).ready(function(){
    $('.messages').delay(5000).fadeOut();
});
Run Code Online (Sandbox Code Playgroud)


Ala*_*air 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)
Run Code Online (Sandbox Code Playgroud)

然后,您将以与pastyleg的答案相同的方式显示消息并使用javascript.