django 将“/”重定向到平面页面
Posted
技术标签:
【中文标题】django 将“/”重定向到平面页面【英文标题】:django redirecting '/' to a flat page 【发布时间】:2011-05-26 06:17:25 【问题描述】:我正在尝试让'/'
重定向到'/first-page'
,其中'/first-page'
是一个带有slug 第一页的内置平面页面
我正在寻找类似的东西
(r'^/', 'redirect_to', 'url': '/flat-page'),
【问题讨论】:
Python + Django page redirect 的可能重复项 @jleedev:它是重复的,但从那时起,随着redirect_to
通用视图的引入,“最佳”答案发生了变化。
@Chris, redirect_to
在 Django 1.0 (docs.djangoproject.com/en/1.0/ref/generic-views/…) 中,在可能重复的最高投票答案之前存在。啧啧。让我们投票赞成那里的redirect_to
答案来解决这个讽刺***.com/questions/523356/python-django-page-redirect/… ;)
@Day: 不再检查我的消息来源... sigh :-)
【参考方案1】:
使用 Django 的通用视图
urlpatterns = patterns('django.views.generic.simple',
('^$', 'redirect_to', 'url': '/first-page'),
)
urlpatterns += patterns('myProject.myApp',
...
)
或
urlpatterns = patterns('',
('^$', 'django.views.generic.simple.redirect_to', 'url': '/first-page'),
...
)
有关更多信息和示例,请参阅the docs。
也要注意你的 URL 匹配,你所拥有的将匹配以 / 开头的任何内容。与 example.com//anything 一样,请注意双斜杠。
【讨论】:
+1 表示django.views.generic.simple.redirect_to
,+1 表示'^$'
而不是'^/'
,这将匹配所有内容,因此需要放在最后并且会打破 404。
谢谢@Chris,我说r'^/'
匹配example.com//anything
但不匹配example.com/anything
对吗?我没有测试过。 -- 更新:测试并正确。【参考方案2】:
使用HttpResponsePermanentRedirect
:
from django.http import HttpResponsePermanentRedirect
# ...
(r'^$', 'redirect_to', lambda request: HttpResponsePermanentRedirect('/flat-page')),
【讨论】:
我认为这根本行不通。如果您坚持使用 lambda 函数,请执行以下操作:(r'^$', lambda request: HttpResponsePermanentRedirect('/flat-page'))
你是对的。我从问题中提取了代码,我认为这是正确的。【参考方案3】:
在 url 的视图中,您可以使用HttpResponseRedirect
。
from django.http import HttpResponseRedirect
def rootview(request):
return HttpResponseRedirect('/flat-page')
【讨论】:
以上是关于django 将“/”重定向到平面页面的主要内容,如果未能解决你的问题,请参考以下文章
如果 url 模式不匹配,Django 如何重定向到 404 页面