matobaの備忘録

和歌山と東京を往復しつつ活動するエンジニアの記録

DjangoのViewってなんなんですか?

タイトルのような質問をされたらどうしますか?

僕は、なんて答えたら良いんだろう、と思いました。

そもそもの話をすると、DjangoのViewのテストについて考えていた時、『これはViewでやることか、Modelでやることがどっちだろう?』とか『apiとして外だしするのが良いのだろうか?』とか『formとの関係性は、、、?』とか、もやもやが出てきて、「あー自分の中で、DjangoのViewが何かわかってないんだなー」と思いました。

で思った質問が『結局、DjangoのViewってなんなんですか?』ってこと。

もやってても、解決しないので、調べてみよう。

DjangoのView

DjangoのViewについて調べてみると次のことがわかりました。

ビュー関数、つまり view は、単にWeb リクエストを受け取って Web レスポンスを返すPython 関数です。

参考:ビューを記述する | Django documentation | Django

なるほど。

ここでいう、Webリクエスト、Webレスポンスって何だろう。

Webリクエスト、Webレスポンス

DjangoのViewを詳しく見てみると、Webリクエスト、というのは、django.http.HttpRequestインスタンス。Webレスポンスというのは、django.http.HttpRequestインスタンスだとわかりました。

そりゃそうだ。

じゃあ、django.http.HttpRequestdjango.http.HttpRequest ってなんだっけ。。

django.http.HttpRequest,HttpRequest

改めて調べてみると、ここをみると書いてます。

リクエストとレスポンスのオブジェクト | Django documentation | Django

当たり前ですが、django.http.HttpRequestはHTTPリクエストをPythonのオブジェクトにマッピングした何か、django.http.HttpRequestHTTPレスポンスをPythonのオブジェクトにマッピングした何か。でした。

はい。まあ名前見たらわかるよね。と言う話です。当たり前でした。はい。

追加の疑問

Viewは、HTTPリクエストオブジェクトを受け取って、HTTPレスポンスオブジェクトを返すことがわかりました。

追加で以下のような疑問が出てきました。

よくわかってないのでそのうち調べます。