【发布时间】:2013-07-28 03:56:39
【问题描述】:
对不起,我的英语不好,我会尽力描述我的问题。 我将 Django 1.5 与 Python 3.2 一起使用。我正在使用 django.contrib.messages 在重定向用户后向用户显示消息。如果我尝试加载重定向到显示消息的另一个页面的页面,则在多次尝试后它不会删除以前的消息(仅删除上一页的消息)。因此,我看到的是 2 条相同的消息。这只发生在 Google Chrome(和 Cromium)中。永远不要在 FireFox 或 Opera 中。无论消息是保存为 cookie 还是会话中。 视图函数被调用了两次,但我不知道为什么 Chrome 与它有什么关系(???)。
我已经录制了视频:http://www.youtube.com/watch?v=nXtQ0uj1Hbw&feature=youtu.be。
稍后添加...
好的。我为此启动了一个新项目(项目“mysite”,其中包含一个名为“test_app”的应用程序):
mysite/urls.py 的内容:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^ms', include('test_app.urls', namespace="testapp")),
)
test_app.py 的内容
from django.conf.urls import patterns, url
urlpatterns = patterns('test_app.views',
url(r'/go-away/$', 'go_away', name='go-away'),
url(r'/come-here/$', 'come_here', name='come-here'),
)
test_app/views.py 的内容
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.contrib import messages
import random
def go_away(request):
messages.info(request, 'FORBIDDEN PLACE! Float: %f' % random.random())
return HttpResponseRedirect(reverse('testapp:come-here'))
def come_here(request):
return render(request, 'testapp/template.html', {})
testapp/templates/testapp/template.html的内容
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% else %}
There was no redirection.
{% endif %}
除此之外,我还添加到了我的 settings.py 中(在 and 处):
# Context processors
TEMPLATE_CONTEXT_PROCESSORS = {
'django.contrib.messages.context_processors.messages',
}
配置数据库(mysite/mysite.db),甚至运行命令“python3 manage.py syncdb”
什么都没做。您可以轻松地复制它。
我的软件: - Python 3.2 - 姜戈 1.5 - 带有从源代码编译的 MOD_WSGI 的 Apache 2.2。 - 所有这些都在 Linux Mint 14 下。
最后你应该看到什么: http://www.youtube.com/watch?v=3L27iwP1PqM&feature=youtu.be 质量不是最重要的,但我确实在这里粘贴了代码。
如您所见,浮动都是不同的,这意味着消息仅在一个请求期间添加,并且不会在任何其他页面上显示。这意味着,据我所知,视图函数运行了两次,忽略了第一次重定向。
P.S.:如果您手动将消息保存到 request.session.messages 列表中,会话也是如此。 只有当我使用 Chrome 或 Chromium 时,我才会遇到这样的问题。如您所见,Opera 运行良好。
【问题讨论】:
-
没有代码我们如何告诉你问题出在哪里?
-
网址、视图的邮政编码以及您重定向的位置。
-
请贴出你的代码,你的英文很好。
-
@user2626972 你解决了吗?我有完全相同的问题。