スポンサーリンク

【Django】クラスベースビュー(汎用ビュー)一覧【generic view】

スポンサーリンク
スポンサーリンク
この記事は約6分で読めます。

 

クラスベースビュー一覧

 

Base Views

View, TemplateView, RedirectViewの3つ

ドキュメント:Base views | Django ドキュメント | Django (djangoproject.com)

 

View

Djangoのビューの親となるビュー。

これ自体で使うことも継承して使用することもできる。

 

概要

Viewクラスは全てのクラスベースの汎用ビューの基本となるクラス。

全てこのViewクラスを継承して作成されている。

ドキュメント:Base views | Django ドキュメント | Django (djangoproject.com)

ソースコード:django/django/views/generic/base.py at main · django/django · GitHub

 

属性

・http_method_names

Viewクラスが受け入れるHTTPメソッドのリスト。

get, post, put, patch, delete, head, options, trace

 

メソッド

・as_view

リクエストを受け取りレスポンスを返す。

urlconf、つまりurls.pyのurlpatterns内のpath関数の第二引数に記述される。

 

・view_as_async

 

 

・setup

全メソッドで共有される属性を初期化する。

dispatch()を行う前に呼び出される。

request, args, kwargsを引数から受け取って同名の属性として初期化することで、どのメソッドからもこれらのオブジェクトにアクセスできるようにする。

 

・dispatch

リクエストメソッドに応じてビューのメソッドを呼び出す。

内部的にはrequestオブジェクトのmethodを全て小文字にして、http_method_names属性に含まれている場合にrequestオブジェクトのmedhodをhandlerに格納する。http_method_names属性に含まれていない場合は http_method_not_allowedを返す。

 

・http_method_not_allowed

Viewクラスが許可していない(http_method_names属性)に含まれていないメソッドを受け取った時に、ログを出力しつつ、ステータスコード405をもつレスポンスを返す。

 

・options

HTTPリクエストのOPTIONSメソッドに対するレスポンスを返す。

OPTIONSメソッドは許可されているHTTPメソッドを取得するために使用されるメソッド。異なるオリジン(ドメイン、プロトコル、ポートがコロナる)のリソースにアクセスする場合にクロスオリジンアクセスを許可しているか。許可されているメソッド、サーバー設定の取得など。

OPTIONSメソッドはリクエストボディを持たない。

 

 

TemplateView

TemplateViewはテンプレートをレンダリングすることに特化したクラス。views.pyで指定されたテンプレートファイルと、views.pyから渡されたcontextを組み合わせてレンダリングしたオブジェクトを返す。このオブジェクトが利用者へHTTPレスポンスとして返されることで、利用者側はブラウザ上でページを見ることができる。

 

TemplateViewViewクラス、TemplateResponseMixin, ContextMixinを継承している。Mixinは特定の機能を実現するために作られたクラス。複数のクラスで共通する機能がある場合に、それらを切り出してまとめておくために使われる。複数のクラスで継承して使用することができる。また必要に応じて機能拡張することができる。

 

ドキュメント:Base views | Django ドキュメント | Django (djangoproject.com)

ソースコード:django/django/views/generic/base.py at main · django/django · GitHub

 

 

RedirectView

RedirectViewは与えられたURLにリダイレクトするためのクラス。

RedirectViewはViewクラスのみ継承する。

 

属性

・parmanent

 

・url

リダイレクト先のURL

 

・pattern_name

リダイレクト先のURLパターン名。urlconf(urls.pyのurlpatterns)で指定されている名前。

 

・query_string

 

 

メソッド

・get_redirect_url

リクエストに含まれる情報を使ってリダイレクト先のURLを返す。

具体的には、URLやurlconfにおけるURLパターンが指定されていないときはNoneを返し、指定されている場合はリクエストからクエリ文字列を取得してURLを構築して返す。

 

・get

get_redirect_urlメソッドを呼び出してリダイレクト先のURLを取得し、適切なレスポンスを返す。

parmanent属性がTrueならHttpResponseParmanentRedirectオブジェクトを返し、そうでなければHttpResponseRedirectオブジェクトを返す。urlが存在しない場合はHTTPステータスコード410と合わせてHttpResponseGoneクラスを返す。(記事の移転や削除を知らせる)

 

 

・head, post, options, delete, put, patch

これらのHTTPメソッドを含むリクエストが来た際は、getメソッドに転送する。

投稿・更新・削除などが送られた後、一覧や詳細画面にリダイレクトするが、その時のHTTPメソッドにそれぞれ対応するためのメソッド群。

 

 

ドキュメント:

ソースコード:django/django/views/generic/base.py at main · django/django · GitHub

 

Generic display View

 

DetailView

ドキュメント:

ソースコード:

ListView

ドキュメント:

ソースコード:

 

Generic Editing View

FormView

ドキュメント:

ソースコード:

CreateView

ドキュメント:

ソースコード:

UpdateView

ドキュメント:

ソースコード:

DeleteView

ドキュメント:

ソースコード:

GenericViewError

ドキュメント:

ソースコード:

 

Generic Date View

 

ArchiveIndexView

ドキュメント:

ソースコード:

YearArchiveView

ドキュメント:

ソースコード:

MonthArchiveView

ドキュメント:

ソースコード:

WeekArchiveView

ドキュメント:

ソースコード:

DayArchveView

ドキュメント:

ソースコード:

TodayArchiveView

ドキュメント:

ソースコード:

DateDetailView

ドキュメント:

ソースコード:

 

 

Django記事一覧

 

Django記事一覧

コメント