Aplikasi pengalihan¶
Django comes with an optional redirects application. It lets you store simple
redirects in a database and handles the redirecting for you. It uses the HTTP
response status code 301 Moved Permanently by default.
Pemasangan¶
Untuk memasang aplikasi pengalihan, ikuti langkah-langkah ini:
- Pastikan bahwa kerangka kerja
django.contrib.sitesis installed. - Tambah pengaturan
'django.contrib.redirects'to yourINSTALLED_APPS. - Tambah
'django.contrib.redirects.middleware.RedirectFallbackMiddleware'ke pengaturanMIDDLEWAREanda. - Jalankan perintah
manage.py migrate.
Bagaimana itu bekerja¶
manage.py migrate creates a django_redirect table in your database. This
is a simple lookup table with site_id, old_path and new_path fields.
RedirectFallbackMiddleware melakukan semua dari pekerjaan. Setiap kali aplikasi Django apapun memunculkan kesalahan 404, middleware ini memeriksa pengalihan basisdata untuk URL diminta sebagai usaha terakhir. Khususnya, itu memeriksa untuk pengalihan dengan diberikan old_path dengan ID situs yang berhubungan pada pengaturan SITE_ID.
- If it finds a match, and
new_pathis not empty, it redirects tonew_pathusing a 301 ("Moved Permanently") redirect. You can subclassRedirectFallbackMiddlewareand setresponse_redirect_classtodjango.http.HttpResponseRedirectto use a302 Moved Temporarilyredirect instead. - Jika itu menemukan kecocokan, dan
new_pathadalah kosong, itu mengirim sebuah 410 ("Gone") kepala HTTP dan tanggapan (kurang-isi) kosong. - Jika itu tidak menemukan kecocokan, permintaan berlanjut untuk diolah seperti biasa.
Middleware hanya dapat diaktifasikan untuk 404 -- bukan untuk 500 atau tanggapan kode keadaan apapun lainnya.
Note that the order of MIDDLEWARE matters. Generally, you can put
RedirectFallbackMiddleware at the
end of the list, because it's a last resort.
Untuk lebih pada middleware, baca dokumentasi middleware.
Bagaimana menambah, merubah dan menghapus pengalihan¶
Melalui antarmuka admin¶
Jika anda telah mengaktifkan antarmuka admin Django otomatis, anda harus melihat bagian "Redirects" pada halaman indeks admin. Sunting pengalihan ketika anda menyunting obyek lain apapun di sistem.
Melalui API Python¶
-
class
models.Redirect¶ Pengalihan adalah diwakili oleh Django model standar, yang tinggal di django/contrib/redirects/models.py. Anda dapat mengakses pengalihan obyek melalui Django database API.
Middleware¶
-
class
middleware.RedirectFallbackMiddleware¶ Anda dapat merubah kelas-kelas
HttpResponsedigunakan oleh middleware dengan membuat sebuah subkelas dariRedirectFallbackMiddlewaredan terutamaresponse_gone_classdan/atauresponse_redirect_class.-
response_gone_class¶ Kelas
HttpResponsedigunakan ketikaRedirecttidak ditemukan untuk jalur yang diminta atau mempunyai nilainew_pathkosong.Awalan pada
HttpResponseGone.
-
response_redirect_class¶ Kelas
HttpResponseyang mengangani pengalihan.Awalan pada
HttpResponsePermanentRedirect.
-