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 menentukanqueryset = Foo.objects.all()
, dimanaobjects
berdiri untuk default managerFoo
.
-
queryset
¶ Sebuah
QuerySet
yang mewakili obyek-obyek. Jika disediakan, nilai dariqueryset
menggantikan nilai disediakan untukmodel
.Peringatan
queryset
adalah sebuah atribut kelas dengan nilai berubah-ubah sehingga perawatan harus diambil ketika menggunakan itu secara langsung. Sebelum menggunakan itu, antara memanggil metodeall()
nya atau mengambil itu denganget_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
, menyebabkanget_object()
melakukan pencariannya menggunakan kedua primay key dan tanda siput. Awalan menjadiFalse
.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
menjadiTrue
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 argumenpk_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 argumenslug_url_kwarg
, dan melakukan pencarian tanda siput menggunakanslug_field
.Ketika
query_pk_and_slug
adalahTrue
,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 atributqueryset
jika itu disetel, jika tidak itu membangun sebuahQuerySet
dengan memanggil metodeall()
pada pengelola awalan atributmodel
.
-
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 darimodel_name
dari the model yang queryset disusun dari. Sebagai contoh, modelArticle
akan mempunyai sebuah obyek konteks bernamaarticle
.
-
get_context_data
(**kwargs)¶ Mengembalikan data konteks untuk menampilkan obyek.
Penerapan dasar dari metode ini membutuhkan bahwa atribut
self.object
disetel oleh tampilan (bahkan jikaNone
). 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 olehget_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 atributmodel
padaUser
, awalan nama obyek konteks dariuser
akan menimpa variabeluser
dari pengolah konteksdjango.contrib.auth.context_processors.auth()
. Gunakanget_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
¶
-
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 mungkinNone
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 daritemplate_name_field
pada instance obyek saat ini adalahNone
, 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
- nilai dari
-