revision-up-to: | 8961 (1.0) |
---|
Web アプリケーションの作成は、同じパターンを何度も何度も繰り返し書くことに なるため、退屈なものです。 Django では、そんなパターンに共通する部分のほと んどを「汎用ビュー (generic view) 」という形で抽象化し、オブジェクトに対し てよく定義されるビューを、 Python コードを一切書かずに作成できるようにして います。
Django の汎用ビューには以下のようなものがあります:
これらのビューは全て、URLconf ファイルに設定の入った辞書を作成し、 URLconf で URL パターンを記述しているタプルの 3 つめのメンバにその辞書を渡すことで 使えるようになります。例えば、djangoproject.com の blog を駆動している簡単 な weblog アプリのための URLconf を以下に示しましょう:
from django.conf.urls.defaults import *
from django_website.apps.blog.models import Entry
info_dict = {'queryset': Entry.objects.all(),
'date_field': 'pub_date'}
urlpatterns = patterns('django.views.generic.date_based',
(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$',
'object_detail', info_dict),
(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/$',
'archive_day', info_dict),
(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$',
'archive_month', info_dict),
(r'^(?P<year>\d{4})/$', 'archive_year', info_dict),
(r'^$', 'archive_index', info_dict),
)
御覧のように、 URLconf では、 info_dict にいくつかのオプションを定義し ています。 queryset は汎用ビューに渡すオブジェクトに対する QuerySet (上の場合には Entry オブジェクト全て) です。また、追加の情報 (どのモデ ルを使っているのかをビューに教えるための情報) も定義しています。
以下では、各汎用ビューのドキュメントと、汎用ビューで使われる全てのキーワー ド引数について説明します。上の例では、引数は URL パターンの中にあるもの (month, day, year, など) も、辞書に入っているもの (queryset, date_field など) もあることに注意してください。
ほとんどの汎用ビューで queryset キーが必要です。この値は QuerySet インスタンスです。 QuerySet オブジェクトの詳細は クエリを生成する を参照してください。
ほとんどのビューは、 extra_context というオプションの引数を取れます。こ の引数の値は辞書で、ビューに渡したい任意の外部の情報を渡すためのものです。 extra_context 辞書の値は関数 (や呼び出し可能オブジェクト) でも、それ以 外のオブジェクトでもかまいません。関数はテンプレートに渡される直前に評価さ れます。ただし、 QuerySet は最初に評価した時点でデータを取得してキャッシュ に入れるので、 extra_context を使ってクエリセットを渡し、なおかつ QuerySet を常に最新の状態にしておきたい場合には、関数やラムダ表記を使って QuerySet を返させるようにせねばなりません。
django.views.generic.simple モジュールには、簡単なビューが入っていて、 ビューロジックの必要がないときのレンダリングと、リダイレクトの発行という よくある二つのケースを処理できるようになっています:
解説:
指定のテンプレートにテンプレート変数 {{ params }} を指定してレンダリン グします。 {{ params }} は URL から取り出したパラメタの辞書になります。
必須の引数:
オプションの引数:
例題:
例えば、以下のような URL パターンを指定したとしましょう:
urlpatterns = patterns('django.views.generic.simple',
(r'^foo/$',
'direct_to_template', {'template': 'foo_index'}),
(r'^foo/(?P<id>\d+)/$',
'direct_to_template', {'template': 'foo_detail'}),
)
/foo/ へのリクエストは、 foo_index.html テンプレートを使ったレンダ リングになります。一方、 /foo/15/ へのリクエストは foo_detail.html テンプレートを使ったレンダリングになりますが、このときのコンテキスト変数 {{ params.id }} は 15 になります。
解説:
指定の URL へリダイレクトします。
URL を指定する文字列には、辞書スタイルの文字列フォーマットを含めてもよく、 その場合、 URL 中の該当パラメタで補完されます。
URL に None を指定すると、 HttpResponseGone (410) を発行します。
必須の引数:
例題:
以下の例では、 /foo/<id>/ を /bar/<id>/ にリダイレクトします:
urlpatterns = patterns('django.views.generic.simple',
('^foo/(?P<id>\d+)/$', 'redirect_to', {'url' : '/bar/%(id)s/'}),
)
以下の例では、 /bar/ へのリクエストに対して HTTP 410 エラーを返します:
urlpatterns = patterns('django.views.generic.simple',
('^bar/$', 'redirect_to', {'url': None}),
)
日付ベースの汎用ビュー (date-based generic view, django.views.generic.date_based モジュール) は、日付ベースのデータを絞 り込めるページを表示するビューです。
解説:
「新着 ("latest")」オブジェクトを日付順で表示するトップレベルのインデクスペー ジです。 allow_future を True にしない限り、 未来の 日付のオブジェ クトは表示しません。
必須の引数:
オプションの引数:
- num_latest: 最近のオブジェクトとしてテンプレートコンテキストに送 り込まれるオブジェクトの数です。デフォルトは 15 です。
- template_name: ページのレンダリングに使うテンプレートの完全な名前 です。この変数を使うと、デフォルトのテンプレート名 (下記参照) をオー バライドできます。
- template_loader: テンプレートのロードに使うテンプレートローダです。 デフォルトでは django.template.loader になっています。
- extra_context: テンプレートコンテキストに追加する値からなる辞書で す。デフォルトでは、この辞書は空になっています。辞書内の値が呼び出し 可能オブジェクトの場合、汎用ビューはテンプレートのレンダリング直前に そのオブジェクトを呼び出します。
- allow_empty: オブジェクトがない場合にページを表示するかどうかを示 すブール値です。 False の場合、表示するべきオブジェクトが存在しな ければ、空のインデクスページを表示する代わりに 404 エラーを送出します。 デフォルトは True です。
- context_processors: ビューのテンプレートに適用するテンプレートコ ンテキストプロセッサのリストです。
- mimetype: 出力結果のドキュメントに適用する MIME タイプです。 デフォルトの値は DEFAULT_CONTENT_TYPE の設定値になります。
- allow_future: 「未来の」オブジェクトをページに表示するかどうかを 制御するブール値です。「未来の」オブジェクトとは、 date_field に 指定したフィールドの値が現在の日/時よりも大きいようなオブジェクトで す。デフォルトでは False です。
Django 1.0 で新たに登場しました.
- template_object_name: テンプレートコンテキストをテンプレート変数 として渡すときの名前です。デフォルト値は 'latest' です。
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_archive.html を使います。ここで:
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
- date_list: queryset を介してオブジェクトを取得できる年を表す datetime.date オブジェクトのリストです。リストは逆順に並んでいま す。 queryset.dates(date_field, 'year')[::-1] と等価です。
Django 1.0 で変更されました: template_object_name に応じて動作が変わるようになりました。
latest: date_field の順に並んだ num_latest 個のオブジェク トです。例えば、 num_latest が 10 であれば、 latest は queryset 内のオブジェクトのうち、最新の 10 個からなるリストです。
変数の名前は template_object_name パラメタで変更できます。デフォ ルト値は 'latest' です。例えば、 template_object_name を 'foo' にしたときの変数名は foo です。
解説:
指定年でオブジェクトのある月のリストを表示する、年ごとのアーカイブページで す。 allow_future を True にしない限り、 未来の 日付のオブジェク トは表示しません。
必須の引数:
オプションの引数:
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_archive_year.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
date_list: 指定年内で queryset を介してオブジェクトを取得でき る月を表す datetime.date オブジェクトのリストです。リストは昇順に 並んでいます。
year: 指定年の年号を表す 4 桁の文字列です。
object_list: make_object_list パラメタを True にした場合、 この値は指定年内のオブジェクトを日付フィールドで並べたリストになりま す。この変数の名前は template_object_name パラメタの設定に依存し ます。 template_object_name のデフォルト値は 'object' で、例 えば template_object_name の値が 'foo' であれば、変数名は foo_list になります。
make_object_list が False の場合、 object_list は空のリス トとしてテンプレートに渡されます。
解説:
指定月の全てのオブジェクトのリストを表示する、月ごとのアーカイブページです。 allow_future を True にしない限り、 未来の 日付のオブジェクトは表 示しません。
必須の引数:
オプションの引数:
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_archive_month.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
解説:
指定週の全てのオブジェクトのリストを表示する、週ごとのアーカイブページです。 allow_future を True にしない限り、 未来の 日付のオブジェクトは表 示しません。
必須の引数:
オプションの引数:
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_archive_week.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
解説:
指定日の全てのオブジェクトのリストを表示する、日ごとのアーカイブページです。 allow_future を True にしない限り、 未来の 日付のオブジェクトを表 示させようとすると、該当するオブジェクトの有無にかかわらず 404 エラーを送出 します。
必須の引数:
オプションの引数:
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_archive_day.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
解説:
今日 の全てのオブジェクトを表示する日ごとアーカイブページです。このページ は archive_day と全く同じで、 year/month/day といった引数を とらず、今日の日付を使う点だけが違います。
解説:
個々のオブジェクトを表現するページです。オブジェクトに設定された時刻が未来 を表す値の場合、 allow_future を True にしない限り、このビューはデフォ ルトで 404 エラーを送出します。
必須の引数:
year: オブジェクトの日付の年部分で、 4 桁の年号 (の文字列) です。
month: オブジェクトの日付の月部分で、 month_format 引数に従っ てフォーマットされています。
day: オブジェクトの日付の日部分で、 day_format 引数に従って フォーマットされています。
queryset: オブジェクトの入っている QuerySet です。
date_field: QuerySet に指定したモデルの DateField または DateTimeField 型のフィールド名です。汎用ビューが year, month, day に応じてオブジェクトを照合するために使います。
object_id または (slug と slug_field) が必要です。
object_id を使う場合、ページに表示するオブジェクトの主キーとなる フィールドの値を指定せねばなりません。
そうでない場合には、 slug にオブジェクトの slug を、 slug_field に QuerySet に指定したモデルの slug フィールド名を 指定せねばなりません。 slug_field のデフォルト値は 'slug' で す。
オプションの引数:
month_format: month パラメタで使っているフォーマットを指定す るためのフォーマット文字列です。この値は Python の time.strftime が受け取るのと同じ書法のフォーマット文字列を指定します。 (strftime のドキュメント 参照)。デフォルトでは "%b" に設定さ れており、これは 3 文字で省略して表した月名です。数字を使うように変え たければ "%m" を使って下さい。
day_format: month_format に似ていますが、 day パラメタ用 です。デフォルト値は "%d" (日付を 01-31 の 2 桁の 10 進数で表した もの) です。
template_name: ページのレンダリングに使うテンプレートの完全な名前 です。この変数を使うと、デフォルトのテンプレート名 (下記参照) をオー バライドできます。
template_name_field: オブジェクトの表示に使うテンプレート名が入っ たフィールドの名前です。このパラメタを使うと、データ中にテンプレート 名を保存しておけます。 例えば、オブジェクトに 'the_template' という名前のフィールドがあ り、その値が 'foo.html' という文字列の場合、 template_name_field を 'the_template' に指定しておくと、汎用 ビューはオブジェクトの表示に 'foo.html' を使おうとするわけです。
ちょっと首を捻りたくなるような機能ですが、場合によってはとても便利な 機能です。
template_loader: テンプレートのロードに使うテンプレートローダです。 デフォルトでは django.template.loader になっています。
extra_context: テンプレートコンテキストに追加する値からなる辞書で す。デフォルトでは、この辞書は空になっています。辞書内の値が呼び出し 可能オブジェクトの場合、汎用ビューはテンプレートのレンダリング直前に そのオブジェクトを呼び出します。
allow_empty: オブジェクトがない場合にページを表示するかどうかを示 すブール値です。 False の場合、表示するべきオブジェクトが存在しな ければ、空のインデクスページを表示する代わりに 404 エラーを送出します。 デフォルトは False です。
context_processors: ビューのテンプレートに適用するテンプレートコ ンテキストプロセッサのリストです。
template_object_name: テンプレートコンテキスト内で使うテンプレー ト変数名を示します。デフォルトでは 'object' になっています。ビュー はこの変数名に '_list' を追加して変数名を決定します。
mimetype: 出力結果のドキュメントに適用する MIME タイプです。 デフォルトの値は DEFAULT_CONTENT_TYPE の設定値になります。
allow_future: 「未来の」オブジェクトをページに表示するかどうかを 制御するブール値です。「未来の」オブジェクトとは、 date_field に 指定したフィールドの値が現在の日/時よりも大きいようなオブジェクトで す。デフォルトでは False です。
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_detail.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
リスト-詳細 (list/detail) 形式の汎用ビューフレームワーク (django.views.generic.list_detail モジュール) は、日付ベースの汎用ビュー に似ていますが、オブジェクトのリストと個々のオブジェクトのページという二つ のビューしか持ちません。
解説:
オブジェクトのリストを表現するページです。
必須の引数:
オプションの引数:
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_list.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
表示結果がページ分割されている場合、コンテキストには以下の追加の変数が入り ます:
paginate_by を指定した場合、 Django は結果をページ分割 (peginate) しま す。 URL でページ番号を指定するには二つの方法があります:
URLconf で page パラメタをキャプチャします。例えば、 URLconf は以 下のようになるでしょう:
(r'^objects/page(?P<page>[0-9]+)/$', 'object_list', dict(info_dict))
ページ番号をクエリ文字列パラメタ page に渡します。例えば URL は以 下のようになります:
/objects/?page=3
全てのページ番号にわたるループを実施したい場合は、 page_range を 使ってください。例えば、page_range にわたる反復処理を行って、 全てのページへのリンクを作成できます。
page や page_range は 0 ではなく 1 から始まる数で指定します。従って 最初のページのページ番号は 1 です。
ペジネーションの詳細は、 Pagination のドキュメント を参照してください。
特別なケースとして、 page の値に last を使えます:
/objects/?page=last
このようにすると、いちいち総ページ数を数えなくても、最後のページにアクセス できます。
page の値は実在するページ番号か、 last でなければなりません。それ以 外の値を page に指定すると 404 エラーを引き起こします。
個々のオブジェクトを表現するページです。
解説:
個々のオブジェクトを表現するページです。
必須の引数:
queryset: オブジェクトの入っている QuerySet です。
object_id または (slug と slug_field) が必要です。
object_id を使う場合、ページに表示するオブジェクトの主キーとなる フィールドの値を指定せねばなりません。
そうでない場合には、 slug にオブジェクトの slug を、 slug_field に QuerySet に指定したモデルの slug フィールド名を 指定せねばなりません。 slug_field のデフォルト値は 'slug' で す。
オプションの引数:
template_name: ページのレンダリングに使うテンプレートの完全な名前 です。この変数を使うと、デフォルトのテンプレート名 (下記参照) をオー バライドできます。
template_name_field: オブジェクトの表示に使うテンプレート名が入っ たフィールドの名前です。このパラメタを使うと、データ中にテンプレート 名を保存しておけます。 別の言い方をするなら、オブジェクトに 'the_template' という名前の フィールドがあり、その値が 'foo.html' という文字列の場合、 template_name_field を 'the_template' に指定しておくと、汎用 ビューはオブジェクトの表示に 'foo.html' を使おうとします。
ちょっと首を捻りたくなるような機能ですが、場合によってはとても便利な 機能です。
template_loader: テンプレートのロードに使うテンプレートローダです。 デフォルトでは django.template.loader になっています。
extra_context: テンプレートコンテキストに追加する値からなる辞書で す。デフォルトでは、この辞書は空になっています。辞書内の値が呼び出し 可能オブジェクトの場合、汎用ビューはテンプレートのレンダリング直前に そのオブジェクトを呼び出します。
context_processors: ビューのテンプレートに適用するテンプレートコ ンテキストプロセッサのリストです。
template_object_name: テンプレートコンテキスト内で使うテンプレー ト変数名を示します。デフォルトでは 'object' になっています。ビュー はこの変数名に '_list' を追加して変数名を決定します。
mimetype: 出力結果のドキュメントに適用する MIME タイプです。 デフォルトの値は DEFAULT_CONTENT_TYPE の設定値になります。
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_detail.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
django.views.generic.create_update モジュールには、オブジェクトの作成 (create)、編集 (edit, update)、削除 (delete) のための関数が入っています。
django.views.generic.create_update.create_object や django.views.generic.create_update.update_object は、 forms ライブラリ を使ってフォームを生成・表示す るようになりました。
解説:
オブジェクト作成のためのフォームを表示し、オブジェクトを保存するためのペー ジです。検証エラーが生じた場合にはフォームを再表示します。
必須の引数:
form_class または model のいずれかを指定せねばなりません。
form_class を指定する場合には、 django.forms.ModelForm クラスのサブクラスを指定します。この引数は、モデルのフォームをカスタ マイズしたいときに使います。詳しくは ModelForm のドキュメント を参照して ください。
model には Django のモデルクラスを指定します。この場合、フォーム は model に対する標準の ModelForm で生成されます。
オプションの引数:
post_save_redirect: はオブジェクトを保存した後のビューのリダイレ クト先 の URL です。デフォルト値は object.get_absolute_url() です。
post_save_redirect には、辞書を使う文字列フォーマット引数を含めら れます。辞書のキーはオブジェクトのフィールド名に解釈されます。例えば、 post_save_redirect="/polls/%(slug)s/" のように指定できます。
login_required: オブジェクトを編集し、変更を保存するため編集にロ グインが必要かどうかを指定するブール値です。 Django の 認証システム にフックをかけます。デフォルト値は False です。
この値が True の場合、匿名ユーザがこのページを訪問したりフォーム を保存しようとしたりすると、 Django はリクエストを /accounts/login/ にリダイレクトします。
template_name: ページのレンダリングに使うテンプレートの完全な名前 です。この変数を使うと、デフォルトのテンプレート名 (下記参照) をオー バライドできます。
template_loader: テンプレートのロードに使うテンプレートローダです。 デフォルトでは django.template.loader になっています。
extra_context: テンプレートコンテキストに追加する値からなる辞書で す。デフォルトでは、この辞書は空になっています。辞書内の値が呼び出し 可能オブジェクトの場合、汎用ビューはテンプレートのレンダリング直前に そのオブジェクトを呼び出します。
context_processors: ビューのテンプレートに適用するテンプレートコ ンテキストプロセッサのリストです。
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_form.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
form: オブジェクトを編集するためのフォームを表現する django.forms.ModelForm インスタンスです。この変数を使うと、テ ンプレートシステム中でフォームフィールドを簡単に参照できます。
例えば、モデルが name と address という二つのフィールドを持っ ている場合は、以下のように書けます:
<form action="" method="post"> <p>{{ form.name.label_tag }} {{ form.name }}</p> <p>{{ form.address.label_tag }} {{ form.address }}</p> </form>
Form オブジェクトをテンプレート内で使う方法の詳しい説明は、 forms のドキュメント を参照してください。
解説:
既存のオブジェクトを編集するためのフォームを表示し、オブジェクトを保存する ためのページです。検証エラーが生じた場合にはフォームを再表示します。
必須の引数:
form_class または model のいずれかを指定せねばなりません。
form_class を指定する場合には、 django.forms.ModelForm クラスのサブクラスを指定します。この引数は、モデルのフォームをカスタ マイズしたいときに使います。詳しくは ModelForm のドキュメント を参照して ください。
model には Django のモデルクラスを指定します。この場合、フォーム は model に対する標準の ModelForm で生成されます。
object_id または (slug と slug_field) が必要です。
object_id を使う場合、ページに表示するオブジェクトの主キーとなる フィールドの値を指定せねばなりません。
そうでない場合には、 slug にオブジェクトの slug を、 slug_field に QuerySet に指定したモデルの slug フィールド名を 指定せねばなりません。 slug_field のデフォルト値は 'slug' で す。
オプションの引数:
post_save_redirect: オブジェクトを保存した後のビューのリダイレ クト先 の URL です。デフォルト値は object.get_absolute_url() です。
post_save_redirect には辞書を使う文字列フォーマット引数が入ります。 辞書のキーはオブジェクトのフィールド名に解釈されます。例えば、 post_save_redirect="/polls/%(slug)s/" のように指定できます。
login_required: オブジェクトを編集し、変更を保存するため編集にロ グインが必要かどうかを指定するブール値です。 Django の 認証システム にフックをかけます。デフォルト値は False です。
この値が True の場合、匿名ユーザがこのページを訪問したりフォーム を保存しようとしたりすると、 Django はリクエストを /accounts/login/ にリダイレクトします。
template_name: ページのレンダリングに使うテンプレートの完全な名前 です。この変数を使うと、デフォルトのテンプレート名 (下記参照) をオー バライドできます。
template_loader: テンプレートのロードに使うテンプレートローダです。 デフォルトでは django.template.loader になっています。
extra_context: テンプレートコンテキストに追加する値からなる辞書で す。デフォルトでは、この辞書は空になっています。辞書内の値が呼び出し 可能オブジェクトの場合、汎用ビューはテンプレートのレンダリング直前に そのオブジェクトを呼び出します。
context_processors: ビューのテンプレートに適用するテンプレートコ ンテキストプロセッサのリストです。
template_object_name: テンプレートコンテキスト内で使うテンプレー ト変数名を示します。デフォルトでは 'object' になっています。
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_form.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
form: オブジェクトを編集するためのフォームを表現する django.oldforms.ModelForm インスタンスです。この変数を使うと、テ ンプレートシステム中でフォームフィールドを簡単に参照できます。
例えば、モデルが name と address という二つのフィールドを持っ ている場合は、以下のように書けます:
<form action="" method="post"> <p>{{ form.name.label_tag }} {{ form.name }}</p> <p>{{ form.address.label_tag }} {{ form.address }}</p> </form>
Form オブジェクトをテンプレート内で使う方法の詳しい説明は、 forms のドキュメント を参照してください。
object: オブジェクトです。この変数変の名前は template_object_name パラメタの値に依存し、そのデフォルト値は 'object' です。 template_object_name が 'foo' の場合、変 数名は foo になります。
解説:
既存のオブジェクトを削除するための確認ページを表示し、オブジェクトを削除する ためのページです。オブジェクトを削除するのはリクエストメソッドが POST であった場合だけです。このビューを GET で取得すると、同じ URL に対して POST を行うような確認ページを表示します。
必須の引数:
model: フォームで削除するオブジェクトの Django モデルクラス です。
object_id または (slug と slug_field) が必要です。
object_id を使う場合、ページに表示するオブジェクトの主キーとなる フィールドの値を指定せねばなりません。
そうでない場合には、 slug にオブジェクトの slug を、 slug_field に QuerySet に指定したモデルの slug フィールド名を 指定せねばなりません。 slug_field のデフォルト値は 'slug' で す。
post_delete_redirect: オブジェクトを削除した後のビューのリダイレ クト先 の URL です。
オプションの引数:
login_required: ページを表示し、変更を保存するため編集にログイン が必要かどうかを指定するブール値です。 Django の 認証システム にフックをかけます。デフォルト値は False です。
この値が True の場合、匿名ユーザがこのページを訪問したりフォーム を保存しようとしたりすると、 Django はリクエストを /accounts/login/ にリダイレクトします。
template_name: ページのレンダリングに使うテンプレートの完全な名前 です。この変数を使うと、デフォルトのテンプレート名 (下記参照) をオー バライドできます。
template_loader: テンプレートのロードに使うテンプレートローダです。 デフォルトでは django.template.loader になっています。
extra_context: テンプレートコンテキストに追加する値からなる辞書で す。デフォルトでは、この辞書は空になっています。辞書内の値が呼び出し 可能オブジェクトの場合、汎用ビューはテンプレートのレンダリング直前に そのオブジェクトを呼び出します。
context_processors: ビューのテンプレートに適用するテンプレートコ ンテキストプロセッサのリストです。
template_object_name: テンプレートコンテキスト内で使うテンプレー ト変数名を示します。デフォルトでは 'object' になっています。
テンプレート名:
template_name を指定しない場合、ビューはデフォルトのテンプレートである <app_label>/<model_name>_confirm_delete.html を使います。
テンプレートコンテキスト:
extra_context の値に加え、テンプレートのコンテキストには以下の変数が入 ります:
Aug 31, 2012