SingleObjectMixin
¶django.views.generic.detail.
SingleObjectMixin
¶現在の HTTP レスポンスに紐付いたオブジェクトをルックアップするための枠組みを提供します。
メソッドと属性
model
¶このビューがデータを表示する対象のモデルです。model = Foo
と指定することは、queryset = Foo.objects.all()
の効率的な書き方で、 objects
は Foo
の デフォルトマネージャ を表します。
queryset
¶オブジェクトを表す QuerySet
です。指定すると、queryset
の値は model
の結果を上書きします。
警告
queryset
は 編集可能な 値を伴うクラスの属性なので、直接使用する際には注意が必要です。この属性を使用する際は、 all()
メソッドを呼び出すか、内部で複製処理を行う get_queryset()
でこれを取得するようにしてください。
slug_field
¶スラグを含むモデル上のフィールドの名前です。デフォルトでは、slug_field
は 'slug'
です。
slug_url_kwarg
¶スラグを含む URLConf キーワード引数の名前です。デフォルトでは、slug_url_kwarg
は 'slug'
です。
pk_url_kwarg
¶プライマリキーを含む URLConf キーワード引数の名前です。デフォルトでは、pk_url_kwarg
は 'pk'
です。
context_object_name
¶Designates the name of the variable to use in the context.
query_pk_and_slug
¶True
の場合、get_object()
がルックアップの際にプライマリキーとスラグの両方を使うようになります。デフォルトは False
です。
This attribute can help mitigate insecure direct object reference
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)¶ビューが表示する単一のオブジェクトを返します。 queryset
が指定されている場合、そのクエリセットがオブジェクトのソースとして使用されます。 それ以外の場合は、 get_queryset()
が使用されます。get_object()
は、ビューへの引数の中から pk_url_kwarg
引数を探します。 この引数が見つかった場合、このメソッドはその値を使用してプライマリキーベースのルックアップを実行します。 この引数が見つからなかった場合は、slug_url_kwarg
引数を探し、slug_field
を使用してスラグのルックアップを実行します。
query_pk_and_slug
が True
のときは、get_object()
はプライマリキーとスラグの両方を使ってルックアップを実施します。
get_queryset
()¶ビューが表示するオブジェクトを取得するために使われる、クエリセットを返します。デフォルトでは、get_queryset()
が queryset
属性がセットされていればこの値を返しますが、セットされていない場合は model
のデフォルトのマネージャーの all()
を呼んで QuerySet
を組み立てます。
get_context_object_name
(obj)¶ビューが操作するデータを格納するために使われる、コンテクストの変数名を返します。context_object_name
がセットされていない場合、コンテクスト名はクエリセットを構成するモデルの model_name
から組み立てられます。例えば、モデル Article
のコンテクストオブジェクトは 'article'
と名付けられます。
get_context_data
(**kwargs)¶Returns context data for displaying the object.
このメソッドの基本的な実装では、self.object
属性が (たとえ None
でも)ビューによってセットされることが必須です。 この mixin をビルトインのビュー以外で使うときには、この実装を忘れないでください。
下記の内容のディクショナリを返します。
object
: ビューが表示しているオブジェクトです (self.object
)。context_object_name
: self.object
は、get_context_object_name()
によって返された名前の下でも保持されます。デフォルトではモデル名の小文字の文字列となります。コンテキスト変数によるテンプレートコンテキストプロセッサからの変数への上書き
get_context_data()
からのあらゆる変数は、 context processors からの変数より優先されます。例えば、ビューが model
属性を User
にセットする場合、 user
のデフォルトのオブジェクト名は func:django.contrib.auth.context_processors.auth からの user
変数をオーバーライドします。衝突を避けるには get_context_object_name()
を使ってください。
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
.
SingleObjectTemplateResponseMixin
¶django.views.generic.detail.
SingleObjectTemplateResponseMixin
¶単一のオブジェクトインスタンスを操作するビューをレンダリングする、テンプレートベースのレスポンスを実行する mixin クラスです。 混合されたビューは、操作するオブジェクトインスタンスである self.object
が必要です。 self.object
は、通常 (必須ではありませんが) Django モデルのインスタンスです。 ビューが新しいインスタンスを構築中の場合は、None
になることがあります。
Extends
メソッドと属性
template_name_field
¶現在のオブジェクトインスタンス上のフィールドで、テンプレートの名前の候補を決定するために使用できます。 template_name_field
自体、または現在のオブジェクトインスタンスの template_name_field
の値のいずれかが None
の場合、オブジェクトはテンプレート名候補として使用されません。
template_name_suffix
¶自動生成されたテンプレート名候補に追加する接尾辞です。 デフォルトの接尾辞は _detail
です。
get_template_names
()¶Returns a list of candidate template names. Returns the following list:
template_name
on the view (if provided)template_name_field
の内容<app_label>/<model_name><template_name_suffix>.html
2022年6月01日