日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

HttpResponseのサブクラスたち

今日は手抜きで、HttpResponseのサブクラスを簡単に解説します。

HttpResponse

いままでのサンプルコードで使っているのはこれでした。
ようは HTTP Status 200 OKを返すためのクラスです。

このクラスに限らず、HttpResponseのサブクラスはテキストだけではなく、バイナリデータも返せます。それにHTTPレスポンスヘッダーも指定できます。

HttpResponseのコンストラクタは色々な引数を渡すことができます。マニュアルから抜粋すると

HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE)

ありがちなMIMEタイプやステータスコード、Content-Typeが指定できるようになっています。
ただ、ここでは指定できないレスポンスヘッダーを指定するときは、次のような形で指定できます。

response['Pragma'] = 'no-cache'

簡単ですね。。。
他にも、JavaServlet APIに似た、flushやwriteなんて関数も存在します。

HttpResponseRedirect

名前の通り、リダイレクトです。

HttpResponseRedirect('http://www.yahoo.co.jp/')

のような使い方になります。ちなみにこのリダイレクトは 301 のリダイレクトで 302 は、HttpReponsePermanentRedirect になります。

HttpResponseNotFound

Djangoでは、 404 Not Foundまでクラスになっています。。。
ステータスが 404 である以外は、HttpResponseと使い方が一緒です。
さすがにやりすぎじゃないか? Django!!と思った。

その他、関数について詳しく知りたいときは、マニュアルのこのページを参照です。

こんなの使い分けるのかったるいなぁ、ということで次回はショートカット関数をあれこれ紹介します。