【Django】クラスベースビューでCookieをセットする方法

【Django】クラスベースビューでCookieをセットする方法

こんばんはエンジニアの眠れない夜です。

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_responseget_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を取得します。

もちろん辞書の操作方法なのでジェネリックビューの方でも同じことが言えます。

 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください