タイトルのような質問をされたらどうしますか?
僕は、なんて答えたら良いんだろう、と思いました。
そもそもの話をすると、DjangoのViewのテストについて考えていた時、『これはViewでやることか、Modelでやることがどっちだろう?』とか『apiとして外だしするのが良いのだろうか?』とか『formとの関係性は、、、?』とか、もやもやが出てきて、「あー自分の中で、DjangoのViewが何かわかってないんだなー」と思いました。
で思った質問が『結局、DjangoのViewってなんなんですか?』ってこと。
もやってても、解決しないので、調べてみよう。
DjangoのView
DjangoのViewについて調べてみると次のことがわかりました。
なるほど。
ここでいう、Webリクエスト、Webレスポンスって何だろう。
Webリクエスト、Webレスポンス
DjangoのViewを詳しく見てみると、Webリクエスト、というのは、django.http.HttpRequest
のインスタンス。Webレスポンスというのは、django.http.HttpRequest
のインスタンスだとわかりました。
そりゃそうだ。
じゃあ、django.http.HttpRequest
と django.http.HttpRequest
ってなんだっけ。。
django.http.HttpRequest,HttpRequest
改めて調べてみると、ここをみると書いてます。
リクエストとレスポンスのオブジェクト | Django documentation | Django
当たり前ですが、django.http.HttpRequest
はHTTPリクエストをPythonのオブジェクトにマッピングした何か、django.http.HttpRequest
HTTPレスポンスをPythonのオブジェクトにマッピングした何か。でした。
はい。まあ名前見たらわかるよね。と言う話です。当たり前でした。はい。
追加の疑問
Viewは、HTTPリクエストオブジェクトを受け取って、HTTPレスポンスオブジェクトを返すことがわかりました。
追加で以下のような疑問が出てきました。
- じゃあDjangoって、HTTPのリクエストをパースして、Pythonのオブジェクトにマッピングしてるんだっけ。
- gunicornとかWSGIってなんだっけ。。。
- Djangoのミドルウェアってどこでどういう仕事してるんですか?
- ViewとURLディスパッチャはどういう関係と思えば良いんだっけ。。URLディスディスパッチャはテストとかいらないんだっけ?
- QueryDict オブジェクトというのがあったけど、これは何ですか。 https://docs.djangoproject.com/ja/2.0/ref/request-response/#querydict-objects
よくわかってないのでそのうち調べます。