【Django】render_to_responseでCookieを設定する方法

Django

スポンサーリンク

Djangoのviews.py内で、Cookieを設定する処理を書きたいと思った。

ネットを検索しても、

response = HttpResponseObject(html)
response.set_cookie("key","value")
return response

というように、responseに設定するやり方ばっかり書いていた。

しかし、今回は、

class Hoge(ListView):

などの、ListViewやDetailViewを継承しているクラスをつかってCookieを設定したかった。

このクラスは、getやpostの戻り値が「return self.render_to_response(context)」というように、render_to_responseとなっている。

なので、やり方が少し違った。

render_to_responseでCookieを設定するやり方は以下

class Hoge(ListView):
    def get(self, request, *args, **kwargs):
        # ListViewのgetメソッドを継承
        render_to_response = super().get(request, *args, **kwargs)
        # ListViewのgetメソッドの戻り値のrender_to_responseにset_cookieで設定する
        render_to_response.set_cookie("key","value")
        # render_to_responseを返す
        return render_to_response

このやり方を見つけるのに数時間もかかってしまった。

Django

Posted by ton