Если вы используете Django 1.4 или 1.5, вы можете сделать это:
from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
...
Если вы используете Django 1.6 или выше, вы можете сделать это:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
В Django 1.9 значение по умолчанию permanent
изменилось с True на False. По этой причине, если вы не укажете permanent
аргумент ключевого слова, вы можете увидеть это предупреждение:
RemovedInDjango19Warning: значение по умолчанию RedirectView.permanent изменится с True на False в Django 1.9. Установите явное значение, чтобы отключить это предупреждение.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_name
аргумента для выполненияRedirectView
обратного вызова во время вызова с использованием заданного имени шаблона. Другие полезные параметры включаютpermanent
иquery_string
.У меня это работает.
В приведенном выше примере
'/'
это означает, что он будет перенаправлен на страницу индекса, где вы также можете добавить любые шаблоны URL.источник
RedirectView
естьpermanent=True
по умолчанию в старых версиях Django, иpermanent=False
по умолчанию в Django версии> = 1.9.для django v2 +
источник
permanent=False
стоит по умолчанию. Для получения дополнительной информации прочтите: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…Этот способ поддерживается в более старых версиях django, если вы не можете поддерживать RedirectView.
В view.py
В url.py
Вы можете сделать его постоянным, используя
HttpResponsePermanentRedirect
источник
Я пытался перенаправить все ошибки 404 на домашнюю страницу, и следующее отлично сработало:
источник