SingleObjectMixin
¶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 tanda siput. Secara awalan, slug_field
adalah 'slug'
.
slug_url_kwarg
¶Nama dari argumen kata kunci URLConf yang mengandung tanda siput. 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 tanda siput. 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 tanda siput unik mungkin melayani tujuan yang sama, tetapi skema ini mengizinkan anda memiliki tanda siput 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 tanda siput menggunakan slug_field
.
Ketika query_pk_and_slug
adalah True
, get_object()
akan melakukan pencariannya menggunakan kedua primary key dan tanda siput.
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 menampilkan 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 tanda siput untuk digunakan mencari oleh tanda siput. Secara awalan ini cukup mengembalikan nilai dari slug_field
.
SingleObjectTemplateResponseMixin
¶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:
template_name
pada tampilan (jika disediakan)template_name_field
pada instance obyek yang tampilan sedang beroperasi diatas (jika tersedia)<app_label>/<model_name><template_name_suffix>.html
Des 02, 2019