Mixin obyek tunggal

SingleObjectMixin

class django.views.generic.detail.SingleObjectMixin

Menyediakan sebuah mekanisme untuk mencari sebuah obyek terkait dengan permintaan HTTP saat ini.

Cara dan Atribut

model

Model yang tampilan ini akan menampilkan data. Menentukan model = Foo secara efektif sama seperti menentukan queryset = Foo.objects.all(), dimana objects berdiri untuk default manager Foo.

queryset

Sebuah QuerySet yang mewakili obyek-obyek. Jika disediakan, nilai dari queryset menggantikan nilai disediakan untuk model.

Peringatan

queryset adalah sebuah atribut kelas dengan nilai berubah-ubah sehingga perawatan harus diambil ketika menggunakan itu secara langsung. Sebelum menggunakan itu, antara memanggil metode all() nya atau mengambil itu dengan get_queryset() yang merawat dari kloning dibelakang layar.

slug_field

Nama dari bidang pada model yang mengandung keong. Secara awalan, slug_field adalah 'slug'.

slug_url_kwarg

Nama dari argumen kata kunci URLConf yang mengandung keong. Secara awalan, slug_url_kwarg adalah 'slug'.

pk_url_kwarg

Nama dari argumen kata kunci URLConf yang mengandung primary key. Secara awalan, pk_url_kwarg adalah 'pk'.

context_object_name

Menandakan nama dari variabel untuk digunakan di konteks.

query_pk_and_slug

Jika True, menyebabkan get_object() melakukan pencariannya menggunakan kedua primay key dan keong. Awalan menjadi False.

Atribut ini dapat membantu mengatasi serangan insecure direct object reference. Ketika aplikasi mengizinkan akses ke obyek-obyek pribadi dengan primay key berurutan, seorang penyerang dapat menebak brute-force semua URL; dengan demikian mendapatkan semua daftar dari semua obyek-obyek di aplikasi. Jika pengguna dengan akses ke obyek-obyek pribadi harus dicegah dari mendapatkan daftar ini, pengaturan query_pk_and_slug menjadi True akan membantu mencegah menebak URL setiap URL akan membutuhkan dua benar, argumen bukan-berurutan. Cukup menggunakan sebuah keong unik mungkin melayani tujuan yang sama, tetapi skema ini mengizinkan anda memiliki keong bukan-unik.

get_object(queryset=None)

Mengembalikan obyek tunggal yang tampilan ini akan diperlihatkan. Jika queryset disediakan, queryset itu akan digunakan sebagai sumber dari obyek-obyek; jika tidak, get_queryset() akan digunakan. get_object() mencari sebuah argumen pk_url_kwarg di argumen pada tampilan; jika argumen ini ditemukan, metode ini melakukan sebuah pencarian berdasarkan primary-key menggunakan nilai itu. Jika argumen ini tidak ditemukan, itu mencari sebuah argumen slug_url_kwarg, dan melakukan pencarian keong menggunakan slug_field.

Ketika query_pk_and_slug adalah True, get_object() akan melakukan pencariannya menggunakan kedua primary key dan keong.

get_queryset()

Mengembalikan queryset yang akan digunakan mengambil obyek yang tampilan ini akan diperlihatkan. Secara awalan, get_queryset() mengembalikan nilai dari atribut queryset jika itu disetel, jika tidak itu membangun sebuah QuerySet dengan memanggil metode all() pada pengelola awalan atribut model.

get_context_object_name(obj)

Mengembalikan nama variabel konteks yang akan digunakan mewadahi daftar data yang tampilan ini dimanipulasi. Jika context_object_name tidak disetel, nama konteks akan dibangun dari model_name dari the model yang queryset disusun dari. Sebagai contoh, model Article akan mempunyai sebuah obyek konteks bernama article.

get_context_data(**kwargs)

Mengembalikan data konteks untuk memperlihatkan daftar dari obyek.

Penerapan dasar dari metode ini membutuhkan bahwa atribut self.object disetel oleh tampilan (bahkan jika None). Pastikan melakukan ini jika anda sedang menggunakan mixin ini tanpa satu dari tampilan siap-pakai yang melakukan begitu.

Itu mengembalikan sebuah kamus dengan isi ini:

  • object: Obyek dimana tampilan ini diperlihatkan (self.object).

  • context_object_name: self.object juga akan disimpan dibawah nama dikembalikan oleh get_context_object_name(), yang awalan ke versi huruf kecil dari nama model.

Variabel konteks menimpa nilai-nilai dari pengolah konteks cetakan

Tiap variabel dari get_context_data() mengambil hak lebih tinggi terhadap variabel konteks dari context processors. Sebagai contoh, jika tampilan anda menyetel atribut model pada User, awalan nama obyek konteks dari user akan menimpa variabel user dari pengolah konteks django.contrib.auth.context_processors.auth(). Gunakan get_context_object_name() untuk menghindari tabrakan.

get_slug_field()

Mengembalikan nama dari bidang keong untuk digunakan mencari oleh keong. Secara awalan ini cukup mengembalikan nilai dari slug_field.

SingleObjectTemplateResponseMixin

class django.views.generic.detail.SingleObjectTemplateResponseMixin

Sebuah kelas mixin yang melakukan pembangunan tanggapan berdasarkan-cetakan untuk tampilan yang beroperasi diatas instance obyek tunggal. Membutuhkan bahwa tampila itu dicampur dengan menyediakan self.object, instance obyek yang tampilan beroperasi. self.object akan biasanya, tetapi itu tidak diwajibkan, sebuah instance dari model Django. Itu mungkin None jika tampilan di pengolahan dari membangun instance baru.

Perpanjang

Cara dan Atribut

template_name_field

Bidang pada instance obyek saat ini yang dapat digunakan untuk menentukan nama dari calon cetakan. Jika antara template_name_field itu sendiri atau nilai dari template_name_field pada instance obyek saat ini adalah None, obyek tidak akan digunakan untuk calon nama cetakan.

template_name_suffix

Akhiran ditambahkan ke calon nama cetakan dibangkitkan-otomatis. Awalan akhiran adalah _detail.

get_template_names()

Mengembalikan daftar dari calon nama-nama cetakan. Mengembalikan daftar berikut:

  • nilai dari template_name pada tampilan (jika disediakan)

  • isi dari bidang template_name_field pada instance obyek yang tampilan sedang beroperasi diatas (jika tersedia)

  • <app_label>/<model_name><template_name_suffix>.html