Django 的闪存消息不起作用
我觉得我的设置可能有问题。当我在登录操作中使用闪现消息时,在首页模板中看不到这个消息;但是当我在“我的”操作中使用闪现消息时,却看到了消息的重复。
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'debug_toolbar',
'bookmarks',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
视图:
def login(request):
...
if user is not None and user.is_active:
auth.login(request, user)
messages.add_message(request, messages.SUCCESS, 'cant see it')
return redirect(reverse('bookmarks:index'))
...
def my(request):
...
messages.add_message(request, messages.SUCCESS, 'this is twice')
return render(request, 'bookmarks/my.html', {
'bookmarks': bookmarks
})
还有我的 index.html
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
//编辑 可能是路由方面的问题?
urlpatterns = patterns('',
url(r'^$', views.index, name = 'index'),
...
url(r'^my/$', views.my, name = 'my'),
...
)
1 个回答
0
这些闪烁的消息只有在你显示一个页面的时候才会出现。
所以你看到两个消息的原因是:
- 你成功登录了,并设置了一条消息。
- 然后你被重定向到首页,消息系统记住了这条消息。
- 你的首页显示出来时,就会同时显示这两条消息。