Извините за мой плохой английский, я постараюсь описать свою проблему как можно лучше. Я использую Django 1.5 с Python 3.2. Я использую django.contrib.messages для отображения сообщений пользователям после их перенаправления. Если я попытаюсь загрузить страницу, перенаправляющую на другую страницу с сообщением, после нескольких попыток она не удаляет предыдущие сообщения (только на последней предыдущей странице). Итак, я вижу два одинаковых сообщения. Это происходит только в Google Chrome (и Cromium). Никогда в FireFox или Opera. Независимо от того, сохраняются ли сообщения в виде файлов cookie или в сеансе. Функция просмотра вызывается дважды, но я не знаю, почему и что конкретно связано с этим Chrome (???).django view called дважды
Я записал видео: http://www.youtube.com/watch?v=nXtQ0uj1Hbw&feature=youtu.be.
Добавлено позже ...
Ok. Я начал новый проект именно для этого (проекта «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/шаблоны/панциря с/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 - Apache 2.2 с mod_wsgi, составленный из источника. - Все это под Linux Mint 14.
Что вы должны видеть в конце: http://www.youtube.com/watch?v=3L27iwP1PqM&feature=youtu.be качество не gratest, но я сделал вставить код здесь.
Как вы можете видеть, поплавки все разные, это означает, что сообщения добавляются только в течение одного запроса и не отображаются на других страницах. И это означает, что, как я понимаю, функция просмотра выполнялась дважды, игнорируя первую переадресацию.
P.S .: Это то же самое с сеансом, если вы сохраняете сообщения вручную в списке request.session.messages. У меня такая проблема, только когда я использую Chrome или Chromium. Опера, как вы можете видеть, отлично работает.
Без кода, как мы можем сообщить вам, где проблема? – Rohan
Почтовый код URL-адресов, просмотров и откуда вы перенаправляете. –
Пожалуйста, разместите свой код, и ваш английский замечательный. –