从根目录重定向到应用程序出错了

时间:2014-05-09 11:27:19

标签: django django-urls

我想从/重定向到/post/,但在试验中,我创建了一些循环引用,而不是转到/post/然后显示我的帖子索引,它转到/post/post/post/...。在这个测试中,我做了 urls - 包括,所以这里是我的两个 urls 文件。

项目 urls.py

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls), name='admin'),
    url(r'^post/', include('post.urls'), name='post'),
    url(r'^/$', RedirectView.as_view(url='index'))
)

申请Post urls.py

urlpatterns = patterns(
    '',  # prefix
    url(r'^update/(?P<id>[1-9][0-9]*)', PostUpdateView.as_view(), name='post_update'),
    url(r'^delete/(?P<id>[1-9][0-9]*)', PostDeleteView.as_view(), name='post_delete'),
    url(r'^detail/(?P<id>[1-9][0-9]*)', PostDetailView.as_view(), name='post_detail'),
    url(r'^create/$', PostCreateView.as_view(), name='post_create'),
    url(r'^list/$', PostListView.as_view(), name='post_list'),
    url(r'^$', PostIndexView.as_view(), name='post_index')
)

更新:

问题是Firefox 26(可能还有其他浏览器?)缓存301(Django&#39; RedirectView使用的默认重定向代码?)HTTP响应,如此StackOverflow帖子中所述。

为了解决这个问题,您必须清除缓存(可能还有网站偏好设置)并始终permanent=False添加到重定向中,因此它使用302(不可缓存)而不是301(可缓存)响应。当您使用该重定向(即部署到生产环境)时,您可以将其更改为默认行为。

1 个答案:

答案 0 :(得分:1)

在项目urls.py中使用它。它基本上只是对名称进行反转并使用该URL。 Docs

url(r'^$', RedirectView.as_view(pattern_name='post_index'))