クラスベースビュー一覧
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記事一覧
コメント