首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django URL重定向

Django URL重定向
EN

Stack Overflow用户
提问于 2013-02-19 21:54:10
回答 5查看 112.8K关注 0票数 116

如何将与我的任何其他URL不匹配的流量重定向回主页?

urls.py:

代码语言:javascript
复制
urlpatterns = patterns('',
    url(r'^$', 'macmonster.views.home'),
    #url(r'^macmon_home$', 'macmonster.views.home'),
    url(r'^macmon_output/$', 'macmonster.views.output'),
    url(r'^macmon_about/$', 'macmonster.views.about'),
    url(r'^.*$',  'macmonster.views.home'),
)

现在,最后一个条目将所有“其他”流量发送到主页,但我希望通过HTTP301302进行重定向。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-19 21:57:50

您可以尝试名为RedirectView的基于类的视图

代码语言:javascript
复制
from django.views.generic.base import RedirectView

urlpatterns = patterns('',
    url(r'^$', 'macmonster.views.home'),
    #url(r'^macmon_home$', 'macmonster.views.home'),
    url(r'^macmon_output/$', 'macmonster.views.output'),
    url(r'^macmon_about/$', 'macmonster.views.about'),
    url(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
)

请注意,作为<url_to_home_view>中的url,您需要实际指定url。

permanent=False将返回HTTP302,而permanent=True将返回HTTP301。

或者,您可以使用django.shortcuts.redirect

Django 2+版本的更新

在Django 2+中,url()被废弃,取而代之的是re_path()。用法与使用正则表达式的url()完全相同。对于不需要正则表达式的替换,使用path()

代码语言:javascript
复制
from django.urls import re_path

re_path(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
票数 203
EN

Stack Overflow用户

发布于 2015-07-09 04:22:36

在Django 1.8中,我是这样做的。

代码语言:javascript
复制
from django.views.generic.base import RedirectView

url(r'^$', views.comingSoon, name='homepage'),
# whatever urls you might have in here
# make sure the 'catch-all' url is placed last
url(r'^.*$', RedirectView.as_view(pattern_name='homepage', permanent=False))

你可以不使用url,而是使用pattern_name,它有点不干练,可以确保你改变了你的url,你也不需要改变重定向。

票数 39
EN

Stack Overflow用户

发布于 2019-07-27 18:08:00

其他方法工作得很好,但您也可以使用老的django.shortcut.redirect

下面的代码取自this answer

在Django 2.x中:

代码语言:javascript
复制
from django.shortcuts import redirect
from django.urls import path, include

urlpatterns = [
    # this example uses named URL 'hola-home' from app named hola
    # for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
    path('', lambda request: redirect('hola/', permanent=True)),
    path('hola/', include('hola.urls')),
]
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14959217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档