[TIL/Django]ジェニリックビュー


前回の関数型のビューをJENICビューに変更しました.
私は関数型の時にどのように操作したのかよく理解していますが、私はそれをクラスに書いて、コードが短縮されましたが、私にとって魔法のような感じがします.
私は理解しなければ記憶が長続きしない人です.今日はJENNERICVIEWのアクションについて書きます!!
映画
Generic Viewは、開発でよく見られる開発モデルを提供するサムネイルです.
クラスビューを作成する場合は、JENICビューを継承してビューを作成できます.
# myView.py
from django.http import HttpResponse
from django.views import View

class MyView(View):

    def get(self, request, *args, **kwargs):
        return HttpResponse('Hello, World!')
# urls.py
from django.urls import path

from myapp.views import MyView

urlpatterns = [
    path('mine/', MyView.as_view(), name='my-view'),
]
おおよそ次の手順で行います.
1.as view()でclassのインスタンスを作成します.
2.dispatch()httpメソッドを見つけ、関連関数に関連付けます.
3.ビューが処理できないhttpメソッドの場合、http method not allowed()が呼び出されます.
View
Generic Viewは常に他のクラスを継承し、最も基本的なビューはViewです.従って、他のJENERICビュー(ListView、DetailView等)を使用することができるビューは継承されており、上記の関数は定義されていません.
Viewで定義されたメソッドの流れは次のとおりです.一つずつ見ます.
setup( ) - dispatch( ) - http_method_not_allowed( ) - options( )
as_view( )
クラスのインスタンスを作成するには、urlの関数にMyClassを接続します.
setup( )
dispatch()を呼び出す前にビューを初期化します.
dispatch( )
リクエストをチェックし,httpメソッドのタイプ(GET,POST,DELETEなど)を特定し,httpメソッドマッチングに委任するメソッドを試みる.GETはget()に,POSTはpost()などに委任する.
http_method_not_allowed( )
ビューがサポートされていないhttpメソッドの場合、呼び出されます.
options( )
OPTIONS HTTPリクエストの応答を処理します.
ListView
名前の通り、リストを表示するビューです.特定のテーブルのすべてのレコードを表示します.
リストがテーブルの完全なレコードである場合は、使用するモデルクラスを指定するだけです.
class MyView(ListView):
	model = Question
DetailView
特定のテーブル内の特定のレコードの詳細を表示するビュー.
レコードの問合せに必要なpk値は、URLConfからビューに抽出された値を使用します.
今日学んだことは
第一に.JENNERICviewの動作As view()インスタンスを作成し、ビューで定義した関数を呼び出し、指定した操作を実行します.(リスト表示、詳細表示など)
2番目.前述したListView,DetailViewなどは,実際のプロジェクトでは使用されない.ビュークラスのみがプロジェクトの状況に合ったビューを継承し、内部でhttp methodと同名のメソッド(get()、post()など)を定義して直接実現していることは後でさらに理解できるかもしれません.
頭はまだはっきりしているが、以前は少しも分からなかったので、今から少し理解し始めた.
残りはこれからも勉強を続けていくうちに感じた部分で今日はそこまでにしましょう…!
次回も派です.🔥🔥🔥
注意:
[Django]Generic Viewの表示
Base views
[Django]クラスビュー
クラスベースのビュー(Class Based View)-ListView、DetailView