Bagaimana cara mengarahkan kembali lalu lintas yang tidak cocok dengan URL saya yang lain kembali ke beranda?
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'),
)
Seperti berdiri, entri terakhir mengirimkan semua lalu lintas "lainnya" ke beranda tetapi saya ingin mengalihkan baik melalui HTTP 301 atau 302 .
sumber
name
bagian ituDEBUG = True
atau setidaknya menyetelADMINS
opsi - docs.djangoproject.com/en/dev/ref/settings/#std:setting-ADMINSDalam Django 1.8, ini adalah bagaimana saya melakukan milik saya.
Alih-alih menggunakan
url
, Anda dapat menggunakanpattern_name
, yang agak tidak KERING, dan akan memastikan Anda mengubah url, Anda tidak perlu mengubah pengalihan juga.sumber
Jika Anda terjebak pada django 1.2 seperti saya dan RedirectView tidak ada, cara lain yang berpusat pada rute untuk menambahkan pemetaan pengalihan adalah menggunakan:
Anda juga dapat merutekan ulang semuanya pada pertandingan. Ini berguna saat mengubah folder aplikasi tetapi ingin mempertahankan bookmark:
Ini lebih disukai daripada django.shortcuts.redirect jika Anda hanya mencoba mengubah perutean url dan tidak memiliki akses ke .htaccess, dll (Saya menggunakan Appengine dan app.yaml tidak mengizinkan pengalihan url pada tingkat itu seperti .htaccess).
sumber
(r'^match_folder/(?P<path>.*)/$', RedirectView.as_view(url='/new_folder/%(path)s/', permanent=True), name='view-name'),
Cara lain untuk melakukannya adalah menggunakan HttpResponsePermanentRedirect seperti ini:
Dalam view.py
Di url.py
sumber
Metode lain berfungsi dengan baik, tetapi Anda juga dapat menggunakan metode lama yang baik
django.shortcut.redirect
.Kode di bawah ini diambil dari jawaban ini .
Di Django 2.x:
sumber