クラスベース汎用ビュー

revision-up-to:17812 (1.4)
リリースノートを参照してください

Note

Django 1.3 の前は、汎用ビューは関数として実装されていました。ここで述べる クラスベース汎用ビューが採用されたので、関数ベース汎用ビューは廃止されま した。

関数ベース汎用ビューの詳細は トピックガイド詳細リファレンス を参照してください。

Web アプリケーションの作成は、同じパターンを何度も何度も繰り返し書くことに なるため、退屈なものです。 Django は、こうした単調作業をモデルやテンプレー トのレイヤで軽減しようとしていますが、 Web 開発者はビューレベルでも退屈さを 感じています。

クラスベース汎用ビューの概略は トピックガイド を参照してください。

このリファレンスでは Django 組み込みの汎用ビューの詳細を記述しています。 それぞれのビューが期待するキーワード引数についても記述しています。 それらの引数は URL パターンか、付加情報である extra_context 辞書のどちらかから得られると 覚えておいてください。

多くの汎用ビューは QuerySet のインスタンスである queryset キーを要求します。 QuerySet オブジェクトについては クエリを生成する を参照してください。

Mixin

Mixin クラスは、クラスの機能継承のために使われます。小分けにした振る舞い (behavior) からクラスを構成します。 Django のクラスベース汎用ビューは、適切な汎用ビューに Mixin を組み合わせて構築します。

例えば DetailView を構成しているのは 以下になります。

  • View 、クラスベースの振る舞いを決める 基本を提供します。
  • SingleObjectMixin 、単一のオブジェクトを 取得して表示するユーティリティを提供します。
  • SingleObjectTemplateResponseMixin 、 単一のオブジェクトを、テンプレートベースのレスポンスで表現するためのツールを提供します。

組み合せることにより、以上の Mixin が目的のビューに必要な要素をすべて提供します。 このビューが返すレスポンスは、単一オブジェクトによりテンプレートをレンダリングしたものです。

Django はたくさんの Mixin を提供しています。自分での汎用ビューを作りたいときは、 それら Mixin を面白い方法で組み合わせてクラスを作りましょう。もしくは Django が提供する、すでにミックスされた (pre-mixied) 汎用ビュー を使うだけでも 良いでしょう。

Note

ビューのドキュメントに Mixin のリストが書かれているときは、そのビューが Mixin から全てのプロパティ、メソッドを受け継いでいるということです。

単純な Mixin

TemplateResponseMixin

class TemplateResponseMixin
template_name

対象ビューのレンダリングに使われるテンプレートのパスになります。

response_class

これはレスポンス用のクラスで render_to_response メソッドにより返されます。 デフォルトは TemplateResponse です。 TemplateResponse インスタンスのテンプレートとコンテキストについては 後の TemplateResponse で後述します。

もしテンプレートの読み込みやコンテキストオブジェクトをカスタムしたい なら、 TemplateResponse をサブプラス化して、それを response_class に指定してください。

render_to_response(context, **response_kwargs)

self.response_class のインスタンスを返します。

キーワード引数が 1 つも与えられない場合は、レスポンスクラスのコンストラクタ を返します。

テンプレートを見つけるために get_template_names() が呼び出されます。 これによってテンプレート名のリストが取得されます。

get_template_names()

テンプレート名のリストを返します。テンプレートレンダリング時の検索に 使われます。

TemplateResponseMixin.template_name が指定されている場合、 デフォルトのままでは TemplateResponseMixin.template_name を含むリストが返されます。 (それが指定されている場合は)

単一オブジェクトの Mixin

SingleObjectMixin

class SingleObjectMixin
model

ビューがデータを表示するモデルです。 model = Foo と指定すると、 queryset = Foo.objects.all() と同じ意味になります。

queryset

QuerySet はオブジェクトを表現します。与えられた場合は SingleObjectMixin.queryset の値が SingleObjectMixin.model に与えられた値に置き換わります。

slug_field

スラグ (slug) を含むモデルのフィールド名になります。デフォルト で slug_field'slug' です。

slug_url_kwarg
リリースノートを参照してください

URLConf キーワード引数からのスラグ名です。デフォルトで slug_url_kwarg'slug' です。

pk_url_kwarg
リリースノートを参照してください

URLConf キーワード引数からプライマリキー名です。デフォルトで pk_url_kwarg'pk' です。

context_object_name

コンテキストで使う変数名を指定します。

get_object(queryset=None)

ビューで表示される単一のオブジェクトを返します。 queryset が 与えられた場合は、このクエリセットからオブジェクトが取得されます。 そうでなければ get_queryset() が使われます。 get_object()SingleObjectMixin.pk_url_kwarg 引数を ビューへの引数から探します。もし見つかった場合は、メソッドはプライマリ キーの値を使って探します。見つからない場合は、 SingleObjectMixin.slug_url_kwarg 引数が探され、 SingleObjectMixin.slug_field からスラグを探します。

get_queryset()

クエリセットを返します。このクエリセットからオブジェクトが取得され、 ビューにより表示されます。デフォルトで get_queryset()queryset が設定されていると、これを返します。 そうでない場合、 model 引数のデフォルト マネジャから all() メソッドを呼び出して QuerySet を生成 します。

get_context_object_name(obj)

このビューが扱うデータを含む、コンテキストの変数名を返します。 context_object_name が設定されていない場合、 コンテキスト名はクエリセットを構成するモデルの object_name から 生成されます。例えば Article モデルの場合は article という名の コンテキストオブジェクトになります。

get_context_data(**kwargs)

オブジェクトのリストを表示するための、コンテキストデータを返します。

コンテキスト

  • object: このビューが表示するオブジェクトです。 context_object_name が指定させれている場合、この変数はコンテキストに object と同じ値で設定されます。

SingleObjectTemplateResponseMixin

class SingleObjectTemplateResponseMixin

テンプレートベースのレスポンスをレンダリングする Mixin クラスです。単一 のオブジェクトインスタンスを扱うビューに使われます。ミックスされたビューは self.object の提供が必要になります。このオブジェクトインスタンスは ビューが扱うものです。 self.object はいつも Django のモデルになるでし ょう。しかし必須ではなく、 None のこともあります。ビューが新しい インスタンスを構成している段階ではそうなります。

拡張点

template_name_field

現在のオブジェクトインスタンスのフィールド名で、候補になるテンプレート名 を特定するために使われます。 template_name_field か、現在の オブジェクトインスタンスの template_name_field の値が None の 場合は、オブジェクトはテンプレート名の特定に問い合わされることはなく なります。

template_name_suffix

自動生成されるテンプレート名の候補のために追加されるサフィックスになり ます。デフォルトのサフィックスは _detail です。

get_template_names()

テンプレート名の候補をリストで返します。以下のようなリストを返します:

  • ビューの template_name の値 (与えられている場合)
  • オブジェクトインスタンスの template_name_field フィールドの値。 このオブジェクトインスタンスはビューが扱っているものです。 (取得できる 場合)
  • <app_label>/<object_name><template_name_suffix>.html

複数オブジェクトの Mixin

MultipleObjectMixin

class MultipleObjectMixin

オブジェクトのリストを表示するために使われる Mixin です。

paginate_by が指定されている場合、 Django はこれに返される結果をページ 分割 (paginate) します。 URL からページ番号を特定するには 2 つの方法が あります。

  • URLConf で page パラメータを使います。例えば URLConf はこのように なります:

    (r'^objects/page(?P<page>[0-9]+)/$', PaginatedView.as_view())
    
  • ページ番号を page クエリ文字列パラメータで渡します。例えば URL Conf はこのようになります:

    /objects/?page=3
    

これらの値とリストは 1 オリジンであり、 0 オリジンではありません。最初の ページは 1 で表されます。

ページ分割 (pagination) に関する詳細は、 ページ分割のドキュメント を読んでください。

特殊なケースとして、 page には last という値も認められています:

/objects/?page=last

これで最後のページにアクセスすることができます。結果が何ページあるのか を決めること無くアクセスできます。

page必ず ページ番号か last でなけれならないことに注意して ください。 page がその他の値の場合は 404 エラーが返されます。

allow_empty

利用できるオブジェクトがない場合にページを表示するかどうかをブール値に よって指定します。これが False で、利用できるオブジェクトがない場合、 空白のページを表示する代わりに、ビューは 404 を送出します。デフォルト では True です。

model

ビューがデータを表示するためのモデルになります。 model=Foo と指定 することは、 queryset = Foo.objects.all() と同じ意味になります。

queryset

オブジェクトを表す QuerySet になります。与えられた場合、 MultipleObjectMixin.querysetMultipleObjectMixin.model で与えられた値を置き換えます。

paginate_by

1 ページあたりのオブジェクトの表示数を指定する整数になります。与えられた 場合、ビューは 1 ページあたり MultipleObjectMixin.paginate_by オブジェクトでオブジェクトをページ分割します。ビューは (GET からの) page クエリ文字列パラメータか、 URLConf で指定される page 変数 に期待します。

paginator_class

ページネータクラスはページ分割に使われます。デフォルトでは django.core.paginator.Paginator が使われます。カスタムの ページネータが、 django.core.paginator.Paginator と同じ コンストラクタインタフェースを持っていない場合は、 MultipleObjectMixin.get_paginator() も提供する必要があります。

context_object_name

コンテクストで使われる変数名を指定します。

get_queryset()

ビューが表示するデータを表すクエリセットを返します。

paginate_queryset(queryset, page_size)

4 要素のタプル (paginator, page, object_list, is_paginated) を返します。

1 ページあたりのサイズ page_size で、 queryset をページ分割する よう構成します。リクエストが page 引数を含んでいる場合や、 URL 引数、 GET 引数として取得できた場合は、 object_list は、そのページにある べきオブジェクトになります。

get_paginate_by(queryset)

ページ分割される際のアイテム数を返します。ページ分割されない場合は None を返します。デフォルトでは単純に MultipleObjectMixin.paginate_by の値を返します。

get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)

ビューで使用されるページネータのインスタンスを返します。デフォルトでは paginator_class のインスタンスになります。

get_allow_empty()

利用できるオブジェクトがない場合にページを表示するかどうかを指定する ブール値を返します。このメソッドが False を返して、オブジェクトが 利用できない場合、空白のページを表示する代わりに、ビューは 404 を送出 します。デフォルトでは True です。

get_context_object_name(object_list)

ビューが扱うデータのリストを含むコンテキスト変数の名前を返します。 object_list が Django オブジェクトのクエリセットで、 context_object_name が設定されていない 場合、コンテキスト名にはクエリセットに含まれるモデルの object_name'list' サフィックスを追加したものが使われます。モデル Article はコンテキストオブジェクト名 article_list を持ちます。

get_context_data(**kwargs)

表示されるオブジェクトのリストを含むコンテキストデータを返します。

コンテキスト

  • object_list: ビューが表示させるオブジェクトのリストです。 context_object_name が指定されている場合、この変数の値でもコンテキスト に設定されます。値は object_list と同じになります。
  • is_paginated: 結果がページ分割されるかどうかを表現するブール値になり ます。とりわけ、これが False になるのは、ページサイズが指定されて いない場合と、取得したオブジェクトが複数ページに分割できない場合です。
  • paginator: django.core.paginator.Paginator のインスタンスになり ます。ページが分割されていない場合、このコンテキスト変数は None になり ます。
  • page_obj: django.core.paginator.Page のインスタンスになり ます。ページが分割されていない場合、このコンテキスト変数は None になり ます。

MultipleObjectTemplateResponseMixin

class MultipleObjectTemplateResponseMixin

ビューが扱うオブジェクトのリストを、テンプレートベースのレスポンスにレンダリ ングするMixin クラスです。ミックスされるビューは self.object_list を提供 する必要があり、オブジェクトインスタンスのリストはビュー内で操作される必要が あります。 self.object_list は、必須ではありませんが、 QuerySet になります。

Extends

template_name_suffix

このサフィックスは自動生成されるテンプレート名の候補に付与されます。 デフォルトのサフィックスは _list です。

get_template_names()

テンプレート名の候補を返します。以下のようになります:

  • ビューの template_name の値 (与えられている場合)
  • <app_label>/<object_name><template_name_suffix>.html

編集用 (Editing) Mixin

FormMixin

class FormMixin

フォームを作成、表示する機能を提供する Mixin クラスです。

initial

フォームの初期データを含む辞書です。

form_class

インスタンス化するためのフォームクラスです。

success_url

フォームが正常に動作した後のリダイレクト先 URL です。

get_initial()

フォームから初期データを取得します。デフォルトでは initial の 結果を返します。

Changed in 1.4

Django 1.3 では、このメソッドは initial クラス変数そのものを 返していました。

get_form_class()

インスタンス化するためのフォームクラスを取得します。デフォルトでは form_class です。

get_form(form_class)

get_form_kwargs() を使って form_class のインスタンスを返し ます。

get_form_kwargs()

フォームをインスタンス化するために必要なキーワード引数を構築します。

initial 引数には get_initial() が設定されます。リクエストが POSTPUT の場合は、リクエストデータ (request.POSTrequest.FILES) が提供されるでしょう。

get_success_url()

フォームが正常に動作した後のリダイレクト先 URL を決定します。デフォルト では success_url を返します。

form_valid(form)

get_success_url() へリダイレクトします。

form_invalid(form)

無効な場合のフォームをコンテキストで提供し、レスポンスをレンダリング します。

get_context_data(**kwargs)

kwargs の内容を含むコンテキストを返します。

Context

  • form: ビュー用に生成されたフォームインスタンスです。

Note

FormMixin をミックスしたビューは form_valid()form_invalid() の両機能を提供しなければなりません。

ModelFormMixin

class ModelFormMixin

ModelForms で動作する フォーム Mixin です。独立したフォームではありません。

これは SingleObjectMixin のサブクラス ですので、この Mixin のインスタンスは modelqueryset 引数にアクセスできます。これによって ModelForm が扱うオブジェクトの種類を記述できます。ビューは self.object も 提供します。 self.object によってインスタンスを扱います。インスタンスが 作られるときは、 self.objectNone になります。

Mixin

success_url

フォームが正常に動作した後のリダイレクト先 URL です。

success_url は辞書の文字列フォーマットを含みます。オブジェクトの フィールド引数に対して補間されます。例えば success_url="/polls/%(slug)s/" を使って、モデルの slug フィールドから構成した URL にリダイレクトできます。

get_form_class()

インスタンス化のためのフォームクラスを取得します。 FormMixin.form_class が与えられている場合、そのクラスが使われます。 そうでなければ ModelForm がインスタンス化されます。使われるモデルは querysetmodel から予想されます。この場合どちらかの属性が提供されている必要があります。

get_form_kwargs()

現在のインスタンス (self.object) を標準の FormMixin.get_form_kwargs() に追加します。

get_success_url()

フォームが正当な場合にリダイレクトする URL を返します。 FormMixin.success_url が与えられた場合は、それを返します。 そうでなければオブジェクトの get_absolute_url() の使います。

form_valid(form)

フォームインスタンスを記録します。ビューに現在のオブジェクトを設定し、 get_success_url() にリダイレクトします。

form_invalid()

無効な場合のフォームをコンテキストとして提供し、レスポンスをレンダリング します。

ProcessFormView

class ProcessFormView

基本的な GET 、 POST ワークフローを提供する Mixin です。

get(request, *args, **kwargs)

フォームを構成します。後にこのフォームが含まれるコンテキストを元に レスポンスがレンダリングされます。

post(request, *args, **kwargs)

フォームを構成し、フォームの正当性を評価します。その結果に沿って処理を 行います。

PUT アクションはアナログの POST として扱われます。

DeletionMixin

class DeletionMixin

DELETE http アクションの扱いを有効にします。

success_url

指定されたオブジェクトが削除された場合にリダイレクトされる URL です。

get_success_url(obj)

指定されたオブジェクトがすでに削除されていた場合にリダイレクトする URL を返します。デフォルトでは success_url を返し ます。

日付ベースの Mixin

YearMixin

class YearMixin

ある日付の、年 (year) 要素をパースした情報を取得、提供する Mixin です。

Mixin

year_format

年をパースする際に使われる strftime() フォーマットです。 デフォルトでは '%Y' です。

year

オプション (文字列としての) 年の値です。デフォルトでは None が 設定されています。この場合、年は他の手段によって決定されます。

get_year_format()

年をパースする際に使われる strftime() フォーマットを返し ます。デフォルトでは YearMixin.year_format が返されます。

get_year()

ビューが表示するデータ用の年を返します。以下の方法で順に試されます。

  • YearMixin.year 属性の値
  • URL パターンで取得された year 引数の値
  • GET クエリ引数の year の値

妥当な年を特定できなかった場合は 404 が発生します。

MonthMixin

class MonthMixin

ある日の、月に関する要素のパースされた情報を取得、提供するために使われる Mixin です。

month_format

月をパースする際に使われる strftime() フォーマットです。 デフォルトでは '%b' です。

month

オプション (文字列としての) 月の値です。デフォルトでは None が 設定されています。この場合、月は他の手段によって決定されます。

get_month_format()

strftime() フォーマットを返します。これは月をパースする際に 使われます。デフォルトでは MonthMixin.month_format が返されます。

get_month()

ビューが表示するデータ用の月を返します。以下の方法で順に試されます。

  • MonthMixin.month 属性の値
  • URL パターンで取得された month 引数の値
  • GET クエリ引数の month の値

妥当な月を特定できなかった場合は 404 が発生します。

get_next_month(date)

引数で与えられた日付の、翌月の初日を含む日付オブジェクトを返します。 allow_future = False がビューに設定されており、翌月が未来にある 場合は None を返します。 allow_empty = False の場合は、翌月を データを含んだ状態で返します。

get_prev_month(date)

与えられた日付の前月の初日を含む日付オブジェクトを返します。 allow_empty = False の場合は、データを含んだ前月を返します。

DayMixin

class DayMixin

日付における日 (day) 要素のためのパースされた情報を取得し、提供する Mixin です。

day_format

日をパースする際に使われる strftime() フォーマットです。 デフォルトでは '%d' です。

day

オプション (文字列としての) 日の値です。デフォルトでは None が 設定されています。この場合、年は他の手段によって決定されます。

get_day_format()

strftime() フォーマットを返します。これは日をパースする際に 使われます。デフォルトでは DayMixin.day_format が返されます。

get_day()

ビューが表示するデータ用の日を返します。以下の方法で順に試されます。

  • DayMixin.year 属性の値
  • URL パターンで取得された day 引数の値
  • GET クエリ引数の day の値

妥当な日を特定できなかった場合は 404 が発生します。

get_next_day(date)

引数で与えられた日付の、次の日を含む日付オブジェクトを返します。 allow_future = False がビューに設定されており、翌日が未来にある 場合は None を返します。 allow_empty = False の場合は、翌日の データを含んだ状態で返します。

get_prev_day(date)

与えられた日付の前日を含む日付オブジェクトを返します。 allow_empty = False の場合は、データを含んだ前日を返します。

WeekMixin

class WeekMixin

日付における週 (week) 要素のためのパースされた情報を取得し、提供する Mixin です。

week_format

週をパースする際に使われる strftime() フォーマットです。 デフォルトでは '%U' です。

week

オプション (文字列としての) 週の値です。デフォルトでは None が 設定されています。この場合、週は他の手段によって決定されます。

get_week_format()

strftime() フォーマットを返します。これは週をパースする際に 使われます。デフォルトでは WeekMixin.week_format が返されます。

get_week()

ビューが表示するデータ用の週を返します。以下の方法で順に試されます。

  • WeekMixin.month 属性の値
  • URL パターンで取得された week 引数の値
  • GET クエリ引数の week の値

妥当な週を特定できなかった場合は 404 が発生します。

DateMixin

class DateMixin

すべての日付ベースビュー (date-based views) のための共通の振る舞いを提供 する Mixin クラスです。

Date_Field

QuerySet 内のモデルの DateFieldDateTimeField の名前 です。このモデルは日付ベースの記事においてオブジェクトのページを決定 するために使われます。

allow_future

“未来の (future)” オブジェクトをページ内に含めるかどうかを指定するブール 値です。 “未来” というのは date_filed で指定されるフィールド内の オブジェクトが、現在の日付/時刻よりも大きい値を持っているということ です。デフォルトでは False です。

get_date_field()

ビューが扱う日付データを含むフィールドの名前を返します。デフォルトでは DateMixin.date_field です。

get_allow_future()

ページに “未来の” オブジェクトを含めるかどうかを決定します。”未来” と いうのは date_filed で指定されるフィールド内のオブジェクトが、現在の 日付/時刻よりも大きい値を持っているということです。デフォルトでは DateMixin.allow_future が返されます。

BaseDateListView

class BaseDateListView

すべての日付ベースビューのための共通の振る舞いを提供する基底クラスです。 通常 BaseDateListView はインスタンス 化しません。これのサブクラスの 1 つをインスタンス化することになるでしょう。

このビュー (とサブクラス) が実行されている間、 self.object_list は オブジェクトのリストを含みます。このオブジェクトのリストはビューが扱うもので あり、 self.date_list は日付のリストを含みます。これはどのデータが利用 可能かを表しています。

Mixin

allow_empty

利用可能なオブジェクトが無い際に、ページを表示するかどうかを指定する ブール値です。 True であり、オブジェクトが利用できない場合、ビュー は 404 を送出する代わりに空のページを表示します。デフォルトでこれは False です。

get_dated_items():

(date_list, object_list, extra_context) を含む 3 要素の タプルを返します。

date_list はどのデータが利用可能かを表す日付のリストです。 object_list はオブジェクトのリストです。 extra_context は コンテキストデータの辞書です。これには MultipleObjectMixin に提供される すべてのコンテキストデータが加えられるでしょう。

get_dated_queryset(**lookup)

lookup によって明示されたクエリ引数を使ってフィルタされたクエリ セットを返します。クエリセットのすべての制限について適応されます。 例えば allow_emptyallow_future があります。

get_date_list(queryset, date_type)

date_type タイプの日付のリストを返します。これは queryset が んでいる要素になります。例えば get_date_list(qs, 'year')qs が持つ要素から、年のリストを返します。 date_type 引数の使われ方 については dates() を見てくだ さい。

汎用ビュー

単純な汎用ビュー

View

class View

クラスベースビューの大元です。すべてのクラスベース汎用ビューはこの基本クラス を受け継いでいます。

View にある各リクエストは独自の状態を 持ちます。なので、インスタンスに状態変数 (state variables) を保持しても 安全です (例えば self.foo = 3 はスレッドセーフな (thread-safe) 処理に なります) 。

クラスベースビューは as_view() クラスメソッドを用いて URL パターン内に配置されます:

urlpatterns = patterns('',
        (r'^view/$', MyView.as_view(size=42)),
    )

as_view() に渡されるすべての引数は、リクエストを処理する インスタンスに配置されます。先の例が意味するのは、 MyView へのすべての リクエストは self.size に問い合わせできるということです。

ビューの引数におけるスレッドセーフ

ビューに渡される引数はビューの全インスタンス間で共有されます。これが 意味するのは、リスト、辞書、そしてすべてのオブジェクトをビューに対する 引数として使うべきでないということです。それをした場合、ビューに訪れた あるユーザのアクションが、同じビューに訪れた次のユーザにも影響してしまい ます。

dispatch(request, *args, **kwargs)

ビューにおける view の部分です。 request を含む引数を受け取り HTTP レスポンスを返すメソッドです。

デフォルトの機能は、 HTTP メソッドを調べ、 HTTP メソッドに対応するメソッ ドへ委任します。 GETget() に委任されます。 POSTpost() 、などです。

さらにデフォルトでは requestargskwargs をインス タンスの変数として設定します。なので、ビューのメソッドはリクエストの 詳細を知ることができます。このリクエストはビューを呼び出すのに作られた ものです。

http_method_not_allowed(request, *args, **kwargs)

ビューがサポートしていない HTTP メソッドが呼び出された際は、代わりに このメソッドが呼び出されます。

デフォルトの機能では HttpResponseNotAllowed が返されます。その際、 許可されてるメソッドのリストをプレーンテキストも同時に返します。

TemplateView

class TemplateView

与えられたテンプレートをレンダリングします。その際それを {{ params }} テンプレート引数で渡します。 URL でキャプチャされた引数の辞書になります。

Mixin

template_name

使いたいテンプレートのフルネームです。

get_context_data(**kwargs)

コンテキストデータ辞書を返します。この辞書は params コンテキスト変数 を含む kwargs の内容から構成されています。

コンテキスト

  • params: ビューを起こした URL パターンからキャプチャされたキーワード 引数の辞書です。

RedirectView

class RedirectView

与えられた URL にリダイレクトします。

与えられる URL は辞書スタイル (dictionary-style) のフォーマットを含んでいる でしょう。これは URL からキャプチャしたパラメータを含んでいます。キーワード 補完は (引数が一切渡されなくても) 常に 完了しています。ですので、 URL 内の全 "%" キャラクタは、 "%%" として書かれるべきです。そうすれば Python は出力の際に、それらを単一のパーセント記号として変換します。

与えられた URL が None の場合は、 Djangoは HttpResponseGone (410) を返します。

url

リダイレクトされる URL で、文字列です。 None では 410 (Gone) HTTP エラーを送出します。

permanent

リダイレクトが永続的なものかどうかです。ここで唯一の違いは返される HTTP ステータスコードです。 True の場合、リダイレクトは 301 ステータス コードを使います。 False の場合、 302 ステータスコードを使います。 デフォルトで permanentTrue です。

query_string

GET クエリ文字列を新しいロケーションに伝えるかどうかを選択します。 True の場合、クエリ文字列は URL に付加されます。 False の場合 、クエリ文字列は捨てられます。デフォルトで query_stringFalse です。

get_redirect_url(**kwargs)

リダイレクションの対象となる URL を返します。

デフォルトの機能では url 文字列を元に、 % パラメータで拡張されて使われます。 query_string に要求された場合は、クエリ文字列の 付加も同様に行われます。

詳細なビュー

DetailView

class BaseDetailView
class DetailView

個別のオブジェクトを表現するページです。

このビューが実行されている間、 self.object はビューが操作しているオブ ジェクトを含みます。

BaseDetailViewDetailView と同じ振る舞いを提供します。 しかし、 SingleObjectTemplateResponseMixin を含んでいません。

Mixin

リストビュー

ListView

class BaseListView
class ListView

オブジェクトのリストを表現するページです。

このビューが実行されている間、 self.object_list はビューが操作している オブジェクトのリスト (必須ではないですが、常にクエリセット) を含みます。

BaseListViewListView と同じ振る舞いを提供します。 しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

編集用ビュー

FormView

class BaseFormView
class FormView

フォームを表示するビューです。エラーの場合、フォームが検証エラーとともに 再表示されます。成功した場合は新しい URL にリダイレクトされます。

BaseFormViewFormView と同じ振る舞いを提供します。 しかし、 TemplateResponseMixin を含んでいません。

Mixin

CreateView

class BaseCreateView
class CreateView

オブジェクトを作成するためのフォームを表示するビューです。フォームが検証 エラーとともに再表示されます (何かあった場合) 、そしてオブジェクトが記録 されます

BaseCreateViewCreateView と同じ振る舞いを提供します。 しかし、 TemplateResponseMixin を含んでいません。

Mixin

UpdateView

class BaseUpdateView
class UpdateView

存在するオブジェクトを編集するためのフォームを表示するビューです。フォームが 検証エラーとともに再表示されます (何かあった場合) 、そしてオブジェクトの 変更点が記録されます。これはオブジェクトのモデルクラスの自動生成フォームを 使っています (フォームクラスが手動で指定されていない場合) 。

BaseUpdateViewUpdateView と同じ振る舞いを提供します。 しかし、 TemplateResponseMixin を含んでいません。

Mixin

DeleteView

class BaseDeleteView
class DeleteView

確認用ページを表示し、存在するオブジェクトを削除するビューです。与えられた オブジェクトはリクエストメソッドが POST の場合にのみ削除されます。この ビューが GET を通じて与えられた場合、確認用ページを表示します。この ページは同ページに POST するフォームを含みます。

BaseDeleteViewDeleteView と同じ振る舞いを提供します。 しかし、 TemplateResponseMixin を含んでいません。

Mixin

Notes

  • GET リクエスト時に表示される削除確認ページは '_confirm_delete' という template_name_suffix を使います。

日付ベースビュー

日付ベース汎用ビュー (モジュール django.views.generic.dates にあります) は日付ベースのデータをドリルダウン (drilldown) ページに表示するビューです。

ArchiveIndexView

class BaseArchiveIndexView
class ArchiveIndexView

日付における “最新 (latest)” オブジェクトを表示するトップレベルのインデック スページです。オブジェクトが 未来の 日付にある場合は、 allow_futureTrue に設定していない限り含まれません。

BaseArchiveIndexViewArchiveIndexView と同じ振る舞いを提供 します。しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

Notes

  • デフォルトで context_object_namelatest を使います。
  • デフォルトで template_name_suffix_archive を使います。

YearArchiveView

class BaseYearArchiveView
class YearArchiveView

与えられた年の特定の月すべてを表示する年単位のアーカイブページを表示します。 未来の 日付のオブジェクトは allow_futureTrue にしない限り表示 されません。

BaseYearArchiveViewYearArchiveView と同じ振る舞いを提供 します。しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

make_object_list

この年のためにオブジェクトの全リストを取得し、テンプレートに渡すかどうか を指定するブール値です。 True ならオブジェクトのリストはコンテキスト で使用できるようになります。デフォルトでは False です。

get_make_object_list()

オブジェクトのリストがコンテキストの一部として返されるかどうか判断します 。 False の場合、 None クエリセットがオブジェクトのリストとして 使われます。

コンテキスト

(django.views.generic.dates.BaseDateListView 経由で) django.views.generic.list.MultipleObjectMixin に提供されるコン テキストに加えて、テンプレートコンテキストは以下のようなものがあります:

  • date_list: queryset 内で有効なオブジェクトを持つすべての月を含む DateQuerySet オブジェクトです。 datetime.datetime オブジェクト として昇順に表現されます。
  • year: 与えられた年です。4 キャラクター文字列です。

Notes

  • デフォルトで template_name_suffix_archive_year が使われます。

MonthArchiveView

class BaseMonthArchiveView
class MonthArchiveView

与えられた月すべてのオブジェクトを表示する月単位のアーカイブページを表示 します。未来の 日付のオブジェクトは allow_futureTrue にしない 限り表示されません。

BaseMonthArchiveViewMonthArchiveView と同じ振る舞いを提供 します。しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

コンテキスト

(django.views.generic.dates.BaseDateListView 経由で) django.views.generic.list.MultipleObjectMixin に提供されるコン テキストに加えて、テンプレートコンテキストは以下のようなものがあります:

  • date_list: 与えられた月の有効なオブジェクトを持つ、すべての日を含む DateQuerySet オブジェクトです。 queryset に一致しており、 datetime.datetime オブジェクトを昇順で表現しています。
  • month: 与えられた月を表現する datetime.date オブジェクトです。
  • next_month: 翌月の初日を表現する datetime.datetime オブジェクト です。もし翌月が未来にあるなら、 None になります。
  • previous_month: 前月の初日を表現する datetime.date オブジェクト です。 next_month とは違いこれは None になりません。

Notes

  • template_name_suffix はデフォルトで _archive_month を使います。

WeekArchiveView

class BaseWeekArchiveView
class WeekArchiveView

与えられた週すべてのオブジェクトを表示する週単位のアーカイブページを表示 します。未来の 日付のオブジェクトは allow_futureTrue にしない 限り表示されません。

BaseWeekArchiveViewWeekArchiveView と同じ振る舞いを提供 します。しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

コンテキスト

(django.views.generic.dates.BaseDateListView 経由で) django.views.generic.list.MultipleObjectMixin に提供されるコン テキストに加えて、テンプレートコンテキストは以下のようなものがあります:

  • week: 与えられた週の初日を表現する datetime.date オブジェクトです。

Notes

  • template_name_suffix はデフォルトで _archive_week を使います。
class BaseDayArchiveView
class DayArchiveView

与えられた日のオブジェクトをすべて表示する日単位のアーカイブのページです。 その日が未来にある場合には 404 エラーが返されます。 allow_futureTrue でない限り、オブジェクトが未来にあるかどうか気をつける必要があり ます。

BaseDayArchiveViewDayArchiveView と同じ振る舞いを提供 します。しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

コンテキスト

(django.views.generic.dates.BaseDateListView 経由で) django.views.generic.list.MultipleObjectMixin に提供されるコン テキストに加えて、テンプレートコンテキストは以下のようなものがあります:

  • day: 与えられた日を表現する datetime.date オブジェクト
  • next_day: 翌日を表現する datetime.date オブジェクトです。もし その翌日が未来にある場合は None になります。
  • previous_day: 前日を表現する datetime.date オブジェクトです。 next_day のように None にはなりません。
  • next_month: 翌月の初日を表現する datetime.date オブジェクトです。 もし翌月が未来にあるなら、 None になります。
  • previous_month: 前月の初日を表現する datetime.date オブジェクト です。 next_month のように None にはなりません。

Notes

  • デフォルトで template_name_suffix_archive_day を使います。

TodayArchiveView

class BaseTodayArchiveView
class TodayArchiveView

今日 (today) のすべてのオブジェクトを表示する日単位のアーカイブページ です。これはまさに django.views.generic.dates.DayArchiveView と 同じですが、 year/month/day 属性の代わりに今日の日付が使われる 点が違います。

BaseTodayArchiveViewTodayArchiveView と同じ振る舞いを提供 します。しかし、 MultipleObjectTemplateResponseMixin を含んでいません。

Mixin

DateDetailView

class BaseDateDetailView
class DateDetailView

個別オブジェクトを表現するページです。オブジェクトが持つ日付の値が未来にある 場合、デフォルトでは 404 エラーを送出します。 allow_futureTrue に設定することで 404 エラーを送出しません。

BaseDateDetailViewDateDetailView と同じ振る舞いを提供 します。しかし、 SingleObjectTemplateResponseMixin を含んでいません。

Mixin