---
title: "Mixin obyek tunggal"
version: 4.1
locale: id
source: https://docs.djangoproject.com/id/4.1/ref/class-based-views/mixins-single-object/
canonical: https://djangodocs.dev/id/4.1/ref/class-based-views/mixins-single-object/
---
# 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](/id/4.1/topics/db/managers/#default-managers) `Foo`.

#### `queryset`

Sebuah `QuerySet` yang mewakili obyek-obyek. Jika disediakan, nilai dari `queryset` menggantikan nilai disediakan untuk [`model`](#django.views.generic.detail.SingleObjectMixin.model).

> **Warning**
>
> `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()`](/id/4.1/ref/models/querysets/#django.db.models.query.QuerySet.all) nya atau mengambil itu dengan [`get_queryset()`](#django.views.generic.detail.SingleObjectMixin.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()`](#django.views.generic.detail.SingleObjectMixin.get_object) melakukan pencariannya menggunakan kedua primay key dan tanda siput. Awalan menjadi `False`.

This attribute can help mitigate [insecure direct object reference](https://wiki.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References)
attacks. When applications allow access to individual objects by a
sequential primary key, an attacker could brute-force guess all URLs;
thereby obtaining a list of all objects in the application. If users
with access to individual objects should be prevented from obtaining
this list, setting `query_pk_and_slug` to `True` will help prevent
the guessing of URLs as each URL will require two correct,
non-sequential arguments. Using a unique slug may serve the same
purpose, but this scheme allows you to have non-unique slugs.

#### `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()`](#django.views.generic.detail.SingleObjectMixin.get_queryset) akan digunakan. `get_object()` mencari sebuah argumen [`pk_url_kwarg`](#django.views.generic.detail.SingleObjectMixin.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`](#django.views.generic.detail.SingleObjectMixin.slug_url_kwarg), dan melakukan pencarian tanda siput menggunakan [`slug_field`](#django.views.generic.detail.SingleObjectMixin.slug_field).

Ketika [`query_pk_and_slug`](#django.views.generic.detail.SingleObjectMixin.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()`](#django.views.generic.detail.SingleObjectMixin.get_queryset) mengembalikan nilai dari atribut [`queryset`](#django.views.generic.detail.SingleObjectMixin.queryset) jika itu disetel, jika tidak itu membangun sebuah [`QuerySet`](/id/4.1/ref/models/querysets/#django.db.models.query.QuerySet) dengan memanggil metode `all()` pada pengelola awalan atribut [`model`](#django.views.generic.detail.SingleObjectMixin.model).

#### `get_context_object_name(obj)`

Mengembalikan nama variabel konteks yang akan digunakan mewadahi daftar data yang tampilan ini dimanipulasi. Jika [`context_object_name`](#django.views.generic.detail.SingleObjectMixin.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()`](#django.views.generic.detail.SingleObjectMixin.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()`](#django.views.generic.detail.SingleObjectMixin.get_context_data) mengambil hak lebih tinggi terhadap variabel konteks dari [context processors](/id/4.1/ref/templates/api/#subclassing-context-requestcontext). Sebagai contoh, jika tampilan anda menyetel atribut [`model`](#django.views.generic.detail.SingleObjectMixin.model) pada  [`User`](/id/4.1/ref/contrib/auth/#django.contrib.auth.models.User), awalan nama obyek konteks dari `user` akan menimpa variabel `user` dari pengolah konteks [`django.contrib.auth.context_processors.auth()`](/id/4.1/ref/templates/api/#django.contrib.auth.context_processors.auth). Gunakan [`get_context_object_name()`](#django.views.generic.detail.SingleObjectMixin.get_context_object_name) untuk menghindari tabrakan.

#### `get_slug_field()`

Returns the name of a slug field to be used to look up by slug. By
default this returns the value of [`slug_field`](#django.views.generic.detail.SingleObjectMixin.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**

- [`TemplateResponseMixin`](/id/4.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)

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