API tampilan berdasarkan-kelas siap-pakai

Acuan API tampilan berdasarkan-kelas. Untuk bahan perkenalan, lihat panduan topik Tampilan berdasarkan-kelas.

Spesifikasi

Setiap permintaan dilayani oleh tampilan berbasis-kelas mempunyai keadaan berdiri sendiri; karena itu, itu aman menyimpan variabel keadaan pada instance (yaitu, self.foo = 3 adalah pekerjaan benang-aman).

Sebuah tampilan berdasarkan-kelas disebarkan kedalam corak URL menggunakan metodekelas as_view():

urlpatterns = [
    path('view/', MyView.as_view(size=42)),
]

Thread keamanan dengan argumen tampilan

Argumen-argumen dilewatkan ke tampilan adalah dibagi diantara setiap instance dari tampilan. Ini berarti bahwa anda jangan menggunakan daftar, kamus, atau obyek berubah-ubah lain apapun sebagai sebuah argumen pada tampilan. Jika anda melakukan dan berbagi obyek dirubah, tindakan dari satu pengguna mengunjungi tampilan anda dapat mempunyai sebuah pengaruh pada pengguna berikut mengunjungi tampilan sama.

Argumen dilewatkan kedalam as_view() akan diberikan ke atas instance yang digunakan untuk melayani sebuah permintaan. Menggunakan contoh sebelumnya, ini berarti bahwa setiap permintaan pada MyView dapat menggunakan self.size. Argumen-argumen harus berhubungan ke atribut-atribut yang sudah ada pada kelas (mengembalikan True pada pemeriksaan hasattr).

Tampilan Dasar vs Umum

Dasar tampilan berdasarkan-kelas dapat dianggap sebagai tampilan parent, yang dapat digunakan oleh mereka sendiri atau diwariskan dari. Mereka mungkin tidak menyediakan semua kemampuan diwajibkan untuk proyek, dalam hal ini ada Mixin yang memperpanjang tampilan dasar apa dapat lakukan.

Django's generic views are built off of those base views, and were developed as a shortcut for common usage patterns such as displaying the details of an object. They take certain common idioms and patterns found in view development and abstract them so that you can quickly write common views of data without having to repeat yourself.

Kebanyakan tampilan umum membutuhkan kunci queryset, yang adalah instance QuerySet; lihat Membuat query untuk informasi lebih tentang obyek QuerySet.

Back to Top