2016-09-29 201 views
0

我試圖建立一個社區門戶網站,並正在向用戶顯示一次性消息,如「登錄成功」之類的;並正在使用Django的消息框架。Django消息框架不顯示消息?

我的模板具有以下行目前什麼都不做:

{% if messages %}{% for message in messages %}<script>alert({{ message }});</script>{% endfor %}{% endif %} 

奇怪的是,每個以下作品:

{% if messages %}{% for message in messages %}<script>alert();</script>{% endfor %}{% endif %} 

{% if messages %}{% for message in messages %}<script>alert("Welcome");</script>{% endfor %}{% endif %} 

由此,我得出的結論是,我沒有創造,存儲或正確傳遞消息。但是,我正在檢查文檔,我的語法看起來很好。

我的消息創建; views.py:

def login(request): 

    userName = request.POST.get('usrname',None) 
    userPass = request.POST.get('psw',None) 

    user = authenticate(username=sanitize_html(userName), password=userPass) 

    if user is not None: 
     if user.is_active: 
      auth.login(request, user) 
     messages.add_message(request, messages.INFO, 'Successfully logged in!') 
    else: 
     messages.add_message(request, messages.INFO, 'Login not successful. Please try again.') 

    return HttpResponseRedirect('/home/') 

我的郵件檢索和傳遞,views.py(映射到URL '/家庭/'):

def test(request): 

    messagealert = [] 
    mess = get_messages(request) 

    for message in mess: 
     messagealert.append(message) 

    if request.user.is_authenticated(): 
      student_user = get_student_user(request.user) 
      student_user.first_name = request.user.first_name 
      student_user.last_name = request.user.last_name 
      student_user.email = request.user.email 

      content = { 
       'student_user': student_user, 
       'messages': messagealert, 
      } 
    else: 
      content = { 
       'student_user': None, 
       'messages': messagealert, 
      } 

    return render_to_response('index3.html', content) 

我index3.html模板與行的模板定以上。

我在這裏錯過了什麼?

回答

1

請勿在您的test視圖中使用render_to_response。它不會運行上下文處理器,這些處理器需要將諸如messages之類的內容以及其他有用的項目(如user)插入上下文中。

使用render代替:

return render(request, 'index3.html', context) 
+0

嘿,夥計。這對我有效。非常感謝。儘管我仍然無法在「'但至少它現在在html中顯示。 –