Single object mixins¶
SingleObjectMixin
¶
-
class
django.views.generic.detail.
SingleObjectMixin
¶ 現在の HTTP レスポンスに紐付いたオブジェクトをルックアップするための枠組みを提供します。
Methods and Attributes
-
model
¶ The model that this view will display data for. Specifying
model = Foo
is effectively the same as specifyingqueryset = Foo.objects.all()
, whereobjects
stands forFoo
’s default manager.
-
queryset
¶ A
QuerySet
that represents the objects. If provided, the value ofqueryset
supersedes the value provided formodel
.警告
queryset
is a class attribute with a mutable value so care must be taken when using it directly. Before using it, either call itsall()
method or retrieve it withget_queryset()
which takes care of the cloning behind the scenes.
-
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
です。この属性は 安全でない直接オブジェクト参照 攻撃を軽減するのに役立ちます。 アプリケーションが連番のプライマリキーによって個々のオブジェクトにアクセスできるようにすると、攻撃者はすべての URL をブルートフォースで推測して、 アプリケーション内のすべてのオブジェクトのリストを取得してしまいます。 個々のオブジェクトにアクセスできるユーザがこのリストを取得できないようにするには、
query_pk_and_slug
を `` True``に設定すると、各URLが 2 つの正しい非連番引数を必要とするため、URLを推測するのを防ぎます。 ユニークなスラグを使用するだけでも同じ目的を果たすことができますが、このスキームを使うことでユニークでないスラグを使用することができます。
-
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 からの変数より優先されます。例えば、ビューが themodel
属性をUser
にセットする場合、user
のデフォルトのオブジェクト名は func:django.contrib.auth.context_processors.auth からのuser
変数をオーバーライドします。衝突を避けるにはget_context_object_name()
を使ってください。
-
get_slug_field
()¶ スラグによってルックアップするために使われるスラグフィールドの名前を返します。デフォルトでは、単に
slug_field
の値を返します。
-
SingleObjectTemplateResponseMixin
¶
-
class
django.views.generic.detail.
SingleObjectTemplateResponseMixin
¶ 単一のオブジェクトインスタンスを操作するビューをレンダリングする、テンプレートベースのレスポンスを実行する mixin クラスです。 混合されたビューは、操作するオブジェクトインスタンスである
self.object
が必要です。self.object
は、通常 (必須ではありませんが) Django モデルのインスタンスです。 ビューが新しいインスタンスを構築中の場合は、None
になることがあります。Extends
Methods and Attributes
-
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:
- the value of
template_name
on the view (if provided) - (有効な場合) ビューが操作するオブジェクトインスタンス上の
template_name_field
の内容 <app_label>/<model_name><template_name_suffix>.html
- the value of
-