python – django视图调用了两次
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – django视图调用了两次,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2549字,纯文字阅读大概需要4分钟。
内容图文
![python – django视图调用了两次](/upload/InfoBanner/zyjiaocheng/793/09f4fa8e78a04119b0213e36ba40d539.jpg)
抱歉我的英语不好,我会尽力描述我的问题.
我正在使用Django 1.5和Python 3.2.我正在使用django.contrib.messages在重定向后向用户显示消息.如果我尝试加载重定向到另一个显示消息的页面的页面,经过多次尝试后,它不会删除以前的消息(仅限于上一个上一页).所以,我看到的是两条相同的消息.这仅在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(在和):
# Context processors
TEMPLATE_CONTEXT_PROCESSORS = {
'django.contrib.messages.context_processors.messages',
}
配置数据库(mysite / mysite.db),甚至运行命令“python3 manage.py syncdb”
没有其他事情做过.您可以轻松复制.
我的软件:
– Python 3.2
– Django 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完美无缺.
解决方法:
当您输入网址时,Google Chrome会发送请求.因此,当您按Enter键时,它会发送另一个请求.您遇到的问题可能是因为键入url和按Enter键之间的时间非常短.
您也许可以实现基于时间的视图like来解决问题.
内容总结
以上是互联网集市为您收集整理的python – django视图调用了两次全部内容,希望文章能够帮你解决python – django视图调用了两次所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。