2016-09-29 154 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中显示。 –