重定向后不显示Django消息

时间:2017-09-27 12:10:21

标签: python django

我认为我有这段代码:

if _user.objects.user_exists(_email):
    auth.logout(request)
    messages.success(request, 'You already hold a verified account with us. Please login.')
    return redirect('accounts:login')

这在我的模板中:

{% if messages %}
    {% for message in messages %}
        <div>{{ message }}</div>
    {% endfor %}
{% endif %}

这可悲的是不行。但是,如果我将return redirect('accounts:login')更改为return render(request, 'accounts/login.html'),则会显示该消息。那么在重定向期间阻止消息出现的是什么呢?

对于邮件存储,我正在使用:

MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

经过两天撞墙后,我发现了这个问题。这是我网站的会话设置。

# Session settings
SESSION_COOKIE_DOMAIN = '.mydomain.com'
SESSION_COOKIE_SECURE = True

因此,当在本地(127.0.0.1)开发时,这显然没有恢复我的会话,并且由于本地环境不安全,因此cookie也没有设置。

要解决此问题,必须采取以下步骤:

  1. 在开发计算机中添加127.0.0.1 local.mydomain.com的主机条目
  2. 然后将runserver命令修改为runserver local.mydomain.com:8000
  3. 最后,将安全Cookie设置修改为SESSION_COOKIE_SECURE = not DEBUG
  4. 从那时起,我不得不使用http://local.mydomain.com:8000访问本地版本。

    希望这可以帮助任何人解决同样的问题。