| revision-up-to: | 17812 (1.4) |
|---|
リリースノートを参照してくださいNote
Django 1.3 の前は、汎用ビューは関数として実装されていました。ここで述べる クラスベース汎用ビューが採用されたので、関数ベース汎用ビューは廃止されま した。
Web アプリケーションの作成は、同じパターンを何度も何度も繰り返し書くことに なるため、退屈なものです。 Django は、こうした単調作業をモデルやテンプレー トのレイヤで軽減しようとしていますが、 Web 開発者はビューレベルでも退屈さを 感じています。
クラスベース汎用ビューの概略は トピックガイド を参照してください。
このリファレンスでは Django 組み込みの汎用ビューの詳細を記述しています。
それぞれのビューが期待するキーワード引数についても記述しています。
それらの引数は URL パターンか、付加情報である extra_context 辞書のどちらかから得られると
覚えておいてください。
多くの汎用ビューは QuerySet のインスタンスである queryset キーを要求します。
QuerySet オブジェクトについては クエリを生成する を参照してください。
Mixin クラスは、クラスの機能継承のために使われます。小分けにした振る舞い (behavior) からクラスを構成します。 Django のクラスベース汎用ビューは、適切な汎用ビューに Mixin を組み合わせて構築します。
例えば DetailView を構成しているのは
以下になります。
View 、クラスベースの振る舞いを決める
基本を提供します。SingleObjectMixin 、単一のオブジェクトを
取得して表示するユーティリティを提供します。SingleObjectTemplateResponseMixin 、
単一のオブジェクトを、テンプレートベースのレスポンスで表現するためのツールを提供します。組み合せることにより、以上の Mixin が目的のビューに必要な要素をすべて提供します。 このビューが返すレスポンスは、単一オブジェクトによりテンプレートをレンダリングしたものです。
Django はたくさんの Mixin を提供しています。自分での汎用ビューを作りたいときは、 それら Mixin を面白い方法で組み合わせてクラスを作りましょう。もしくは Django が提供する、すでにミックスされた (pre-mixied) 汎用ビュー を使うだけでも 良いでしょう。
Note
ビューのドキュメントに Mixin のリストが書かれているときは、そのビューが Mixin から全てのプロパティ、メソッドを受け継いでいるということです。
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
を含むリストが返されます。 (それが指定されている場合は)
SingleObjectMixin¶model¶ビューがデータを表示するモデルです。 model = Foo と指定すると、
queryset = Foo.objects.all() と同じ意味になります。
queryset¶QuerySet はオブジェクトを表現します。与えられた場合は
SingleObjectMixin.queryset の値が SingleObjectMixin.model
に与えられた値に置き換わります。
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¶テンプレートベースのレスポンスをレンダリングする 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>.htmlMultipleObjectMixin¶オブジェクトのリストを表示するために使われる 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.queryset は MultipleObjectMixin.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¶ビューが扱うオブジェクトのリストを、テンプレートベースのレスポンスにレンダリ
ングする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>.htmlFormMixin¶フォームを作成、表示する機能を提供する Mixin クラスです。
initial¶フォームの初期データを含む辞書です。
form_class¶インスタンス化するためのフォームクラスです。
success_url¶フォームが正常に動作した後のリダイレクト先 URL です。
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() が設定されます。リクエストが
POST か PUT の場合は、リクエストデータ (request.POST と
request.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¶ModelForms で動作する フォーム Mixin です。独立したフォームではありません。
これは SingleObjectMixin のサブクラス
ですので、この Mixin のインスタンスは model と
queryset 引数にアクセスできます。これによって
ModelForm が扱うオブジェクトの種類を記述できます。ビューは self.object も
提供します。 self.object によってインスタンスを扱います。インスタンスが
作られるときは、 self.object は None になります。
Mixin
success_url¶フォームが正常に動作した後のリダイレクト先 URL です。
success_url は辞書の文字列フォーマットを含みます。オブジェクトの
フィールド引数に対して補間されます。例えば
success_url="/polls/%(slug)s/" を使って、モデルの slug
フィールドから構成した URL にリダイレクトできます。
get_form_class()¶インスタンス化のためのフォームクラスを取得します。
FormMixin.form_class が与えられている場合、そのクラスが使われます。
そうでなければ ModelForm がインスタンス化されます。使われるモデルは
queryset か model
から予想されます。この場合どちらかの属性が提供されている必要があります。
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()¶無効な場合のフォームをコンテキストとして提供し、レスポンスをレンダリング します。
DeletionMixin¶DELETE http アクションの扱いを有効にします。
success_url¶指定されたオブジェクトが削除された場合にリダイレクトされる URL です。
get_success_url(obj)¶指定されたオブジェクトがすでに削除されていた場合にリダイレクトする URL
を返します。デフォルトでは
success_url を返し
ます。
YearMixin¶ある日付の、年 (year) 要素をパースした情報を取得、提供する Mixin です。
Mixin
year_format¶年をパースする際に使われる strftime() フォーマットです。
デフォルトでは '%Y' です。
year¶オプション (文字列としての) 年の値です。デフォルトでは None が
設定されています。この場合、年は他の手段によって決定されます。
get_year_format()¶年をパースする際に使われる strftime() フォーマットを返し
ます。デフォルトでは YearMixin.year_format が返されます。
get_year()¶ビューが表示するデータ用の年を返します。以下の方法で順に試されます。
YearMixin.year 属性の値妥当な年を特定できなかった場合は 404 が発生します。
MonthMixin¶ある日の、月に関する要素のパースされた情報を取得、提供するために使われる Mixin です。
month_format¶月をパースする際に使われる strftime() フォーマットです。
デフォルトでは '%b' です。
month¶オプション (文字列としての) 月の値です。デフォルトでは None が
設定されています。この場合、月は他の手段によって決定されます。
get_month_format()¶strftime() フォーマットを返します。これは月をパースする際に
使われます。デフォルトでは MonthMixin.month_format が返されます。
get_month()¶ビューが表示するデータ用の月を返します。以下の方法で順に試されます。
MonthMixin.month 属性の値妥当な月を特定できなかった場合は 404 が発生します。
get_next_month(date)¶引数で与えられた日付の、翌月の初日を含む日付オブジェクトを返します。
allow_future = False がビューに設定されており、翌月が未来にある
場合は None を返します。 allow_empty = False の場合は、翌月を
データを含んだ状態で返します。
get_prev_month(date)¶与えられた日付の前月の初日を含む日付オブジェクトを返します。
allow_empty = False の場合は、データを含んだ前月を返します。
DayMixin¶日付における日 (day) 要素のためのパースされた情報を取得し、提供する Mixin です。
day_format¶日をパースする際に使われる strftime() フォーマットです。
デフォルトでは '%d' です。
day¶オプション (文字列としての) 日の値です。デフォルトでは None が
設定されています。この場合、年は他の手段によって決定されます。
get_day_format()¶strftime() フォーマットを返します。これは日をパースする際に
使われます。デフォルトでは DayMixin.day_format が返されます。
get_day()¶ビューが表示するデータ用の日を返します。以下の方法で順に試されます。
DayMixin.year 属性の値妥当な日を特定できなかった場合は 404 が発生します。
get_next_day(date)¶引数で与えられた日付の、次の日を含む日付オブジェクトを返します。
allow_future = False がビューに設定されており、翌日が未来にある
場合は None を返します。 allow_empty = False の場合は、翌日の
データを含んだ状態で返します。
get_prev_day(date)¶与えられた日付の前日を含む日付オブジェクトを返します。
allow_empty = False の場合は、データを含んだ前日を返します。
WeekMixin¶日付における週 (week) 要素のためのパースされた情報を取得し、提供する Mixin です。
week_format¶週をパースする際に使われる strftime() フォーマットです。
デフォルトでは '%U' です。
week¶オプション (文字列としての) 週の値です。デフォルトでは None が
設定されています。この場合、週は他の手段によって決定されます。
get_week_format()¶strftime() フォーマットを返します。これは週をパースする際に
使われます。デフォルトでは WeekMixin.week_format が返されます。
get_week()¶ビューが表示するデータ用の週を返します。以下の方法で順に試されます。
WeekMixin.month 属性の値妥当な週を特定できなかった場合は 404 が発生します。
DateMixin¶すべての日付ベースビュー (date-based views) のための共通の振る舞いを提供 する Mixin クラスです。
Date_Field¶QuerySet 内のモデルの DateField か DateTimeField の名前
です。このモデルは日付ベースの記事においてオブジェクトのページを決定
するために使われます。
allow_future¶“未来の (future)” オブジェクトをページ内に含めるかどうかを指定するブール
値です。 “未来” というのは date_filed で指定されるフィールド内の
オブジェクトが、現在の日付/時刻よりも大きい値を持っているということ
です。デフォルトでは False です。
get_date_field()¶ビューが扱う日付データを含むフィールドの名前を返します。デフォルトでは
DateMixin.date_field です。
get_allow_future()¶ページに “未来の” オブジェクトを含めるかどうかを決定します。”未来” と
いうのは date_filed で指定されるフィールド内のオブジェクトが、現在の
日付/時刻よりも大きい値を持っているということです。デフォルトでは
DateMixin.allow_future が返されます。
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_empty や allow_future があります。
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 メソッドに対応するメソッ
ドへ委任します。 GET は get() に委任されます。
POST は post() 、などです。
さらにデフォルトでは request 、 args と kwargs をインス
タンスの変数として設定します。なので、ビューのメソッドはリクエストの
詳細を知ることができます。このリクエストはビューを呼び出すのに作られた
ものです。
http_method_not_allowed(request, *args, **kwargs)¶ビューがサポートしていない HTTP メソッドが呼び出された際は、代わりに このメソッドが呼び出されます。
デフォルトの機能では HttpResponseNotAllowed が返されます。その際、
許可されてるメソッドのリストをプレーンテキストも同時に返します。
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 ステータスコードを使います。
デフォルトで permanent は True です。
query_string¶GET クエリ文字列を新しいロケーションに伝えるかどうかを選択します。
True の場合、クエリ文字列は URL に付加されます。 False の場合
、クエリ文字列は捨てられます。デフォルトで query_string は False
です。
get_redirect_url(**kwargs)¶リダイレクションの対象となる URL を返します。
デフォルトの機能では url 文字列を元に、 %
パラメータで拡張されて使われます。
query_string に要求された場合は、クエリ文字列の
付加も同様に行われます。
BaseDetailView¶DetailView¶個別のオブジェクトを表現するページです。
このビューが実行されている間、 self.object はビューが操作しているオブ
ジェクトを含みます。
BaseDetailView は
DetailView と同じ振る舞いを提供します。
しかし、
SingleObjectTemplateResponseMixin
を含んでいません。
Mixin
BaseListView¶ListView¶オブジェクトのリストを表現するページです。
このビューが実行されている間、 self.object_list はビューが操作している
オブジェクトのリスト (必須ではないですが、常にクエリセット) を含みます。
BaseListView は
ListView と同じ振る舞いを提供します。
しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
BaseFormView¶FormView¶フォームを表示するビューです。エラーの場合、フォームが検証エラーとともに 再表示されます。成功した場合は新しい URL にリダイレクトされます。
BaseFormView は
FormView と同じ振る舞いを提供します。
しかし、
TemplateResponseMixin
を含んでいません。
Mixin
BaseCreateView¶CreateView¶オブジェクトを作成するためのフォームを表示するビューです。フォームが検証 エラーとともに再表示されます (何かあった場合) 、そしてオブジェクトが記録 されます
BaseCreateView は
CreateView と同じ振る舞いを提供します。
しかし、
TemplateResponseMixin
を含んでいません。
Mixin
BaseUpdateView¶UpdateView¶存在するオブジェクトを編集するためのフォームを表示するビューです。フォームが 検証エラーとともに再表示されます (何かあった場合) 、そしてオブジェクトの 変更点が記録されます。これはオブジェクトのモデルクラスの自動生成フォームを 使っています (フォームクラスが手動で指定されていない場合) 。
BaseUpdateView は
UpdateView と同じ振る舞いを提供します。
しかし、
TemplateResponseMixin
を含んでいません。
Mixin
BaseDeleteView¶DeleteView¶確認用ページを表示し、存在するオブジェクトを削除するビューです。与えられた
オブジェクトはリクエストメソッドが POST の場合にのみ削除されます。この
ビューが GET を通じて与えられた場合、確認用ページを表示します。この
ページは同ページに POST するフォームを含みます。
BaseDeleteView は
DeleteView と同じ振る舞いを提供します。
しかし、
TemplateResponseMixin
を含んでいません。
Mixin
Notes
'_confirm_delete' という
template_name_suffix を使います。日付ベース汎用ビュー (モジュール django.views.generic.dates にあります)
は日付ベースのデータをドリルダウン (drilldown) ページに表示するビューです。
BaseArchiveIndexView¶ArchiveIndexView¶日付における “最新 (latest)” オブジェクトを表示するトップレベルのインデック
スページです。オブジェクトが 未来の 日付にある場合は、 allow_future を
True に設定していない限り含まれません。
BaseArchiveIndexView は
ArchiveIndexView と同じ振る舞いを提供
します。しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
django.views.generic.dates.BaseDateListViewdjango.views.generic.list.MultipleObjectTemplateResponseMixinNotes
context_object_name は latest を使います。template_name_suffix は _archive を使います。BaseYearArchiveView¶YearArchiveView¶与えられた年の特定の月すべてを表示する年単位のアーカイブページを表示します。
未来の 日付のオブジェクトは allow_future を True にしない限り表示
されません。
BaseYearArchiveView は
YearArchiveView と同じ振る舞いを提供
します。しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
django.views.generic.list.MultipleObjectTemplateResponseMixindjango.views.generic.dates.YearMixindjango.views.generic.dates.BaseDateListViewmake_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 が使われます。BaseMonthArchiveView¶MonthArchiveView¶与えられた月すべてのオブジェクトを表示する月単位のアーカイブページを表示
します。未来の 日付のオブジェクトは allow_future を True にしない
限り表示されません。
BaseMonthArchiveView は
MonthArchiveView と同じ振る舞いを提供
します。しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
django.views.generic.list.MultipleObjectTemplateResponseMixindjango.views.generic.dates.YearMixindjango.views.generic.dates.MonthMixindjango.views.generic.dates.BaseDateListViewコンテキスト
(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 を使います。BaseWeekArchiveView¶WeekArchiveView¶与えられた週すべてのオブジェクトを表示する週単位のアーカイブページを表示
します。未来の 日付のオブジェクトは allow_future を True にしない
限り表示されません。
BaseWeekArchiveView は
WeekArchiveView と同じ振る舞いを提供
します。しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
django.views.generic.list.MultipleObjectTemplateResponseMixindjango.views.generic.dates.YearMixindjango.views.generic.dates.MonthMixindjango.views.generic.dates.BaseDateListViewコンテキスト
(django.views.generic.dates.BaseDateListView 経由で)
django.views.generic.list.MultipleObjectMixin に提供されるコン
テキストに加えて、テンプレートコンテキストは以下のようなものがあります:
week: 与えられた週の初日を表現する datetime.date オブジェクトです。Notes
template_name_suffix はデフォルトで _archive_week を使います。BaseDayArchiveView¶DayArchiveView¶与えられた日のオブジェクトをすべて表示する日単位のアーカイブのページです。
その日が未来にある場合には 404 エラーが返されます。 allow_future が
True でない限り、オブジェクトが未来にあるかどうか気をつける必要があり
ます。
BaseDayArchiveView は
DayArchiveView と同じ振る舞いを提供
します。しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
django.views.generic.list.MultipleObjectTemplateResponseMixindjango.views.generic.dates.YearMixindjango.views.generic.dates.MonthMixindjango.views.generic.dates.DayMixindjango.views.generic.dates.BaseDateListViewコンテキスト
(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 を使います。BaseTodayArchiveView¶TodayArchiveView¶今日 (today) のすべてのオブジェクトを表示する日単位のアーカイブページ
です。これはまさに django.views.generic.dates.DayArchiveView と
同じですが、 year/month/day 属性の代わりに今日の日付が使われる
点が違います。
BaseTodayArchiveView は
TodayArchiveView と同じ振る舞いを提供
します。しかし、
MultipleObjectTemplateResponseMixin
を含んでいません。
Mixin
BaseDateDetailView¶DateDetailView¶個別オブジェクトを表現するページです。オブジェクトが持つ日付の値が未来にある
場合、デフォルトでは 404 エラーを送出します。 allow_future を True
に設定することで 404 エラーを送出しません。
BaseDateDetailView は
DateDetailView と同じ振る舞いを提供
します。しかし、
SingleObjectTemplateResponseMixin
を含んでいません。
Mixin
Oct 26, 2017