我无法更新Django的RedirectView。它一直引用旧URL,状态为301 Moved Permenantly

时间:2012-05-09 09:37:52

标签: django apache http-status-code-301 django-class-based-views

很抱歉,如果这个问题应该在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')),
)

指定的网址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没有重定向到更新的网址?


服务器信息

在Gentoo Linux上使用mod_wsgi和Django 1.4运行Apache 2.2.21

1 个答案:

答案 0 :(得分:14)

事实证明,301重定向缓存在浏览器上!

所以我清除了浏览器的缓存,一切正常。当我没有真正理解301302之间的区别时,很难知道在哪里查找错误。我也意识到,因为我的RedirectView基本上是一个占位符,直到我写一个真正的家庭模板。我应该使用permanent=False始终创建302。有关详细信息,请查看docs