Я не могу обновить Django RedirectView. Он продолжает ссылаться на старый URL-адрес со статусом 301 Moved Permenantly.

Извините, если этот вопрос должен был быть в Server Vault. Я не мог точно сказать, является ли это ошибкой программирования или ошибкой конфигурации сервера.

Недавно я отправил свои коммиты git на рабочий сервер и заметил кое-что очень неприятное.

Как бы я ни редактировал urls.py, я не могу обновить RedirectView!

Вот мой корень mysite/urls.py

urlpatterns = patterns('',
    url(r'^$', RedirectView.as_view(url=reverse_lazy('order_list')), name='home'),
    url(r'^doors/', include('doors.urls')),
    url(r'^accounts/', include('registration.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^{}/'.format(settings.DAJAXICE_MEDIA_PREFIX), include('dajaxice.urls')),
)

Именованный URL-адрес order_list взят из одного из моих приложений urls.py.

urlpatterns = patterns('doors.views',
    url(r'^order/$', OrderListView.as_view(), name='order_list'),
    # And more URL patterns...
)

Так что в основном я просто изменил r'^orders/$' на r'^order/$' в последнем коммите. Но всякий раз, когда я делаю {% url home %}, я замечаю, что сервер продолжает пытаться перенаправить на старый путь /doors/orders/ вместо /doors/order/. Я также заметил, что перенаправление — это 301 Moved Permanently.

Поэтому я попытался добавить permenant=False к RedirectView и перезапустил сервер. Но он по-прежнему переходит на /doors/orders/, а перенаправление по-прежнему 301 (должно быть 302)!

Почему мой RedirectView не перенаправляет на обновленный URL?


Информация о сервере

Запуск Apache 2.2.21 с использованием mod_wsgi с Django 1.4 в Gentoo Linux


person hobbes3    schedule 09.05.2012    source источник


Ответы (1)


Оказалось, что 301 перенаправления кэшируются в браузере!

Итак, я очистил кеш браузера, и все заработало. Было трудно понять, где искать ошибку, когда я не очень хорошо понимал разницу между 301 и 302. Я также понял, что поскольку мой RedirectView в основном является заполнителем, пока я не напишу настоящий домашний шаблон. Я должен использовать permanent=False, чтобы всегда создавать 302. Взгляните на документы для подробностей.

person hobbes3    schedule 09.05.2012