こんばんはエンジニアの眠れない夜です。
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を取得します。
もちろん辞書の操作方法なのでジェネリックビューの方でも同じことが言えます。



コメントを残す