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 permanent
telah berubah dari True ke False. Karena itu, jika Anda tidak menentukan permanent
argumen 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_name
argumen untukRedirectView
mengeksekusi terbalik untuk Anda saat panggilan menggunakan nama pola yang diberikan. Lainnya parameter yang berguna termasukpermanent
danquery_string
.Ini bekerja untuk saya.
Dalam contoh di atas
'/'
berarti itu akan mengarahkan ulang ke halaman indeks, di mana Anda dapat menambahkan pola url juga.sumber
RedirectView
memilikipermanent=True
default di versi Django yang lebih lama, danpermanent=False
sebagai default di versi Django> = 1.9.untuk Django v2 +
sumber
permanent=False
adalah 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
Di url.py
Anda dapat membuatnya permanen dengan menggunakan
HttpResponsePermanentRedirect
sumber
Saya mencoba mengalihkan semua 404 ke beranda dan yang berikut ini berhasil:
sumber