python - Django URL 重定向

标签 python django django-urls

如何将与我的任何其他 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 301302 重定向。

最佳答案

您可以尝试名为 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/

相关文章:

python - 如何在 Django URLpatterns 中根据请求方法分派(dispatch)?

python - 一周内在不同的间隔运行 cron

python - Flask-Admin - 具有原始表单的自定义 View

python - numpy 数组乘以 10 得到错误的结果

python - Django 重启服务器或 httpd

Django 和服务 worker - 在应用程序的根 url 处提供 "sw.js"

Python 2.7.10 Tkinter 在文本框中的文本周围使用大括号

Django 没有返回 HttpResponse 对象

python - 如何在 Django 网页上获取 Facebook Places(签到)?

python - Django 管理员 : Add <select multiple> to the *other* model in a many-to-many relationship