2012-03-16 65 views
1

我想知道如何顯示問候消息「歡迎用戶,您已登錄」,一旦用戶登錄,它應該在5秒內消失。django消息一旦登錄

該消息將在用戶成功登錄後顯示一次,但不會在同一會話中連續訪問主頁時顯示。因爲我在home.html中的會話中使用了用戶名。

回答

7

使用django's messaging frameworkwrap 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(); 
}); 
+0

是的。現在它的工作。非常感謝.... – Raji 2012-03-16 13:28:42

+0

但我在哪裏可以自定義消息。默認信息「您已經登錄」即將到來。請建議我 – Raji 2012-03-16 13:35:27

+0

在視圖中。你在message.info(請求,「這是我的信息」)中傳遞你想要顯示的信息 – 2012-03-16 13:38:00

4

注意,您可以使用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) 

然後顯示消息並使用javascript與pastyleg的答案相同。