【问题标题】:django redirecting '/' to a flat pagedjango 将“/”重定向到平面页面
【发布时间】:2011-05-26 06:17:25
【问题描述】:

我正在尝试让'/' 重定向到'/first-page',其中'/first-page' 是一个带有slug 第一页的内置平面页面

我正在寻找类似的东西

(r'^/', 'redirect_to', {'url': '/flat-page'}),

【问题讨论】:

标签: python django routing


【解决方案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')

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2014-02-22
    • 2013-03-06
    • 2010-10-06
    相关资源
    最近更新 更多