Single object mixinsLink to this heading

SingleObjectMixinLink to this heading

class django.views.generic.detail.SingleObjectMixinLink to this definition

現在の HTTP レスポンスに紐付いたオブジェクトをルックアップするための枠組みを提供します。

Methods and Attributes

modelLink to this definition

The model that this view will display data for. Specifying model = Foo is effectively the same as specifying queryset = Foo.objects.all(), where objects stands for Foo’s default manager.

querysetLink to this definition

A QuerySet that represents the objects. If provided, the value of queryset supersedes the value provided for model.

slug_fieldLink to this definition

スラグを含むモデル上のフィールドの名前です。デフォルトでは、slug_field'slug' です。

slug_url_kwargLink to this definition

スラグを含む URLConf キーワード引数の名前です。デフォルトでは、slug_url_kwarg'slug' です。

pk_url_kwargLink to this definition

プライマリキーを含む URLConf キーワード引数の名前です。デフォルトでは、pk_url_kwarg'pk' です。

context_object_nameLink to this definition

Designates the name of the variable to use in the context.

query_pk_and_slugLink to this definition

True の場合、get_object() がルックアップの際にプライマリキーとスラグの両方を使うようになります。デフォルトは False です。

この属性は 安全でない直接オブジェクト参照 攻撃を軽減するのに役立ちます。 アプリケーションが連番のプライマリキーによって個々のオブジェクトにアクセスできるようにすると、攻撃者はすべての URL をブルートフォースで推測して、 アプリケーション内のすべてのオブジェクトのリストを取得してしまいます。 個々のオブジェクトにアクセスできるユーザがこのリストを取得できないようにするには、query_pk_and_slug を `` True``に設定すると、各URLが 2 つの正しい非連番引数を必要とするため、URLを推測するのを防ぎます。 ユニークなスラグを使用するだけでも同じ目的を果たすことができますが、このスキームを使うことでユニークでないスラグを使用することができます。

get_object(queryset=None)Link to this definition

ビューが表示する単一のオブジェクトを返します。 queryset が指定されている場合、そのクエリセットがオブジェクトのソースとして使用されます。 それ以外の場合は、 get_queryset() が使用されます。get_object() は、ビューへの引数の中から pk_url_kwarg 引数を探します。 この引数が見つかった場合、このメソッドはその値を使用してプライマリキーベースのルックアップを実行します。 この引数が見つからなかった場合は、slug_url_kwarg 引数を探し、slug_field を使用してスラグのルックアップを実行します。

query_pk_and_slugTrue のときは、get_object() はプライマリキーとスラグの両方を使ってルックアップを実施します。

get_queryset()Link to this definition

ビューが表示するオブジェクトを取得するために使われる、クエリセットを返します。デフォルトでは、get_queryset()queryset 属性がセットされていればこの値を返しますが、セットされていない場合は model のデフォルトのマネージャーの all() を呼んで QuerySet を組み立てます。

get_context_object_name(obj)Link to this definition

ビューが操作するデータを格納するために使われる、コンテクストの変数名を返します。context_object_name がセットされていない場合、コンテクスト名はクエリセットを構成するモデルの model_name から組み立てられます。例えば、モデル Article のコンテクストオブジェクトは 'article' と名付けられます。

get_context_data(**kwargs)Link to this definition

Returns context data for displaying the object.

このメソッドの基本的な実装では、self.object 属性が (たとえ None でも)ビューによってセットされることが必須です。 この mixin をビルトインのビュー以外で使うときには、この実装を忘れないでください。

下記の内容のディクショナリを返します。

  • object: ビューが表示しているオブジェクトです (self.object)。

  • context_object_name: self.object は、get_context_object_name() によって返された名前の下でも保持されます。デフォルトではモデル名の小文字の文字列となります。

get_slug_field()Link to this definition

スラグによってルックアップするために使われるスラグフィールドの名前を返します。デフォルトでは、単に slug_field の値を返します。

SingleObjectTemplateResponseMixinLink to this heading

class django.views.generic.detail.SingleObjectTemplateResponseMixinLink to this definition

単一のオブジェクトインスタンスを操作するビューをレンダリングする、テンプレートベースのレスポンスを実行する mixin クラスです。 混合されたビューは、操作するオブジェクトインスタンスである self.object が必要です。 self.object は、通常 (必須ではありませんが) Django モデルのインスタンスです。 ビューが新しいインスタンスを構築中の場合は、None になることがあります。

Extends

Methods and Attributes

template_name_fieldLink to this definition

現在のオブジェクトインスタンス上のフィールドで、テンプレートの名前の候補を決定するために使用できます。 template_name_field 自体、または現在のオブジェクトインスタンスの template_name_field の値のいずれかが None の場合、オブジェクトはテンプレート名候補として使用されません。

template_name_suffixLink to this definition

自動生成されたテンプレート名候補に追加する接尾辞です。 デフォルトの接尾辞は _detail です。

get_template_names()Link to this definition

Returns a list of candidate template names. Returns the following list:

  • the value of template_name on the view (if provided)

  • (有効な場合) ビューが操作するオブジェクトインスタンス上の template_name_field の内容

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