如何将与我的任何其他 URL 都不匹配的流量重定向回主页?
urls.py:
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'),
)
就目前而言,最后一个条目将所有“其他”流量发送到主页,但我想通过 HTTP 301 或 302 重定向。
最佳答案
您可以尝试名为 RedirectView
的基于类的 View
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
在 <url_to_home_view>
您需要实际指定网址。
permanent=False
将返回 HTTP 302,而 permanent=True
将返回 HTTP 301。
您也可以使用 django.shortcuts.redirect
Django 2+ 版本更新
使用 Django 2+,url()
已弃用并替换为 re_path()
.用法与 url()
完全相同用正则表达式。对于不需要正则表达式的替换,使用 path()
.
from django.urls import re_path
re_path(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
关于python - Django URL 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14959217/