Как я могу перенаправить трафик, который не соответствует ни одному из моих других 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 .
источник
name
частьDEBUG = True
или, по крайней мере, установить этуADMINS
опцию - docs.djangoproject.com/en/dev/ref/settings/#std:setting-ADMINSВ Django 1.8 я сделал так.
Вместо использования
url
вы можете использоватьpattern_name
, который немного не СУХИЙ и гарантирует, что вы измените свой URL-адрес, вам также не нужно менять перенаправление.источник
Если вы застряли на django 1.2, как и я, и RedirectView не существует, можно использовать другой ориентированный на маршрут способ добавления сопоставления перенаправления:
Вы также можете перенаправить все в матче. Это полезно при изменении папки приложения, но желании сохранить закладки:
Это предпочтительнее django.shortcuts.redirect, если вы только пытаетесь изменить маршрутизацию URL-адресов и не имеете доступа к .htaccess и т. Д. (Я использую Appengine, а app.yaml не разрешает перенаправление URL-адресов на этом уровне, например .htaccess).
источник
(r'^match_folder/(?P<path>.*)/$', RedirectView.as_view(url='/new_folder/%(path)s/', permanent=True), name='view-name'),
Другой способ сделать это - использовать HttpResponsePermanentRedirect следующим образом:
В view.py
В url.py
источник
Другие методы работают нормально, но вы также можете использовать старый добрый
django.shortcut.redirect
.Приведенный ниже код был взят из этого ответа .
В Django 2.x:
источник