Jawaban:
Jika Anda menggunakan Django 1.4 atau 1.5, Anda dapat melakukan ini:
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)),
...
Jika Anda menggunakan Django 1.6 atau lebih baru, Anda dapat melakukan ini:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
Dalam Django 1.9, nilai default dari permanenttelah berubah dari True ke False. Karena itu, jika Anda tidak menentukan permanentargumen kata kunci, Anda dapat melihat peringatan ini:
RemovedInDjango19Warning: Nilai default 'RedirectView.permanent' akan berubah dari True ke False di Django 1.9. Tetapkan nilai eksplisit untuk membungkam peringatan ini.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_nameargumen untuk RedirectViewmengeksekusi terbalik untuk Anda saat panggilan menggunakan nama pola yang diberikan. Lainnya parameter yang berguna termasuk permanentdanquery_string .
Ini bekerja untuk saya.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
Dalam contoh di atas '/'berarti itu akan mengarahkan ulang ke halaman indeks, di mana Anda dapat menambahkan pola url juga.
RedirectViewmemiliki permanent=Truedefault di versi Django yang lebih lama, dan permanent=Falsesebagai default di versi Django> = 1.9.
untuk 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=Falseadalah default. Untuk perincian lebih lanjut silakan baca: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…
Cara ini didukung dalam versi Django yang lebih lama jika Anda tidak dapat mendukung RedirectView
Di view.py
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
Di url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Anda dapat membuatnya permanen dengan menggunakan HttpResponsePermanentRedirect