こんばんはエンジニアの眠れない夜です。
Djangoのクラスベースビュー(ジェネリックビュー)でCookieをセットするにはどうすればいいの?と思っている方はこちらをご参考ください。
※ 間違っているところなどありましたらご指摘くださいm(_ _)m
【Django】クラスベースビューでCookieをセットする方法
まずは解説無しで、コードをご覧ください。
クラスビューの中でrender_to_response
を使っています。
クラスビューの中でresponse
を取得できるのがrender_to_response
の中だけなのでここでset_cookie()を使ってCookieをセットします。
get_context_data
で作成したデータをcookieに保存したい場合はcontext
から読み込めばOKです。
逆にCookieをセットしてから get_context_data
を扱いたいと思っても render_to_response
はget_context_data
の後に呼ばれる関数なのでその順番で処理はできません。
クラスベースビューでCookieを取得する方法
get_context_data
でCookieを取得したい場合はこのように書きます。
重要なのはこの1行だけです→ value = self.request.COOKIES['key']
関数型ビューでCookieをセットする方法
関数型ビューでCookieをセットするときは普段ならHttpResponse
ですぐにreturnをしますが、一度変数に保存して、から set_cookie() をするだけです。
関数型ビューでCookieを取得する方法
request.COOKIES
に辞書でCookieが保存されているので、キーを指定して、バリューを取得するだけです。
ここからは辞書の値の取得方法の説明になりますが、
1行目は[‘key’]で取得したときにkeyが無いとエラーになります。
2行目はkeyがない場合はNoneになります。
3行目はkeyがない場合は第2引数で初期値を設定できます。上のコードの場合はdefault_valueを取得します。
もちろん辞書の操作方法なのでジェネリックビューの方でも同じことが言えます。
コメントを残す