# dokumentasi Django 2.2.9.dev20191202104323

# Aplikasi pengalihan

Django datang dengan aplikasi pengalihan pilihan. Itu membuat anda menyimpan pengalihan sederhana dalam basisdata dan menanganipengalihan untuk anda. Itu menggunakan kode keadaan tanggapan HTTP `301 Moved Permanently` secara awalan.

## Pemasangan

Untuk memasang aplikasi pengalihan, ikuti langkah-langkah ini:

1. Pastikan bahwa kerangka kerja `django.contrib.sites` is installed.
2. Tambah pengaturan `'django.contrib.redirects'` to your `INSTALLED_APPS`.
3. Tambah `'django.contrib.redirects.middleware.RedirectFallbackMiddleware'` ke pengaturan `MIDDLEWARE` anda.
4. Jalankan perintah `manage.py migrate`.

## Bagaimana itu bekerja

`manage.py migrate` membuat sebuah tabel `django_redirect` daam basisdata anda. Ini adalah sebuah tabel pencarian sederhana dengan bidang `site_id`, `old_path` dan `new_path`.

`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`.

- Jika itu menemukan sebuah kecocokan, dan `new_path` tidak kosong, itu mengalihkan ke `new_path` menggunakan sebuah pengalihan 301 ("Dipindah tetap"). Anda dapat men sub kelaskan `RedirectFallbackMiddleware` dan setel `response_redirect_class` menjadi `django.http.HttpResponseRedirect` untuk menggunakan sebuah pengalihan `302 Moved Temporarily` sebagai gantinya.
- Jika itu menemukan kecocokan, dan `new_path` adalah 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.

Catat bahwa urutan daru hal-hal `MIDDLEWARE`. Umumnya, anda dapat menaruh `RedirectFallbackMiddleware` pada akhir dari daftar, karena itu adalah usaha terakhir.

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 diwakili oleh sebuah standar Django model, yang berada dalam django/contrib/redirects/models.py. Anda dapat mengakses obyek-obyek melalui Django database API.

## Middleware

class `middleware.``RedirectFallbackMiddleware`

  Anda dapat merubah kelas-kelas `HttpResponse` digunakan oleh middleware dengan membuat sebuah subkelas dari `RedirectFallbackMiddleware` dan terutama `response_gone_class` dan/atau `response_redirect_class`.

  `response_gone_class`

    Kelas `HttpResponse` digunakan ketika `Redirect` tidak ditemukan untuk jalur yang diminta atau mempunyai nilai `new_path` kosong.

    Awalan pada `HttpResponseGone`.

  `response_redirect_class`

    Kelas `HttpResponse` yang mengangani pengalihan.

    Awalan pada `HttpResponsePermanentRedirect`.