Відповіді:
Якщо ви перебуваєте на 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" за замовчуванням у Django 1.9 зміниться з True на False. Встановіть явне значення, щоб заглушити це попередження.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_name
аргумент проходження для RedirectView
виконання зворотного для вас під час виклику з використанням заданого імені шаблону. Інші корисні параметри включають permanent
іquery_string
.
Це працює для мене.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
Наведений вище приклад '/'
означає, що він буде перенаправлений на сторінку з покажчиками, куди також можна додати будь-які шаблони URL-адрес.
RedirectView
є, permanent=True
а у версіях Django - permanent=False
за замовчуванням> = 1.9.
для django v2 +
from django.contrib import admin
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=False)),
path('hola/', include("hola.urls")),
path('admin/', admin.site.urls),
]
permanent=False
це за замовчуванням. Докладніше читайте на сайті: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…
Цей спосіб підтримується в старих версіях django, якщо ви не можете підтримувати RedirectView
У view.py
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
В url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Ви можете зробити його постійним, використовуючи HttpResponsePermanentRedirect