こんばんはエンジニアの眠れない夜です。
今回はDjangoのクラスベースビュー(ジェネリックビュー)でCookieを保存する方法を紹介します。
※ 間違っているところなどありましたらご指摘くださいm(_ _)m
関数で作ったビューでCookieの保存方法する場合
まずは普通の関数で作った場合のCookieの保存方法を確認してみましょう。
いつもであれば render()
をそのまま return
で返しますが、Cookieを設定する場合は一旦、変数 response
に入れて、そこに set_cookie('key','value')
をします。
普通にresponseを返す前にCookieを設定しているだけなのですごく単純です。
ちなみに max_age
でCookieの有効期限を秒単位で指定できます。
max_age = 60 * 60 * 24 * 7
response.set_cookie('key', 'value', max_age = max_age)
これで7日間Cookieを保存する設定になります。
続いてこれを暮らすベースビューで設定する方法を紹介します。
DjangoのクラスベースビューでCookieを保存
クラスベースビューの場合 response
を返すところってどこなんだろう?というところが分からないところです。
get_context_data()
やget_query()
はDjangoで開発をしているとよく使いますが response
を返すのは render_to_response()
です。
ちなみに私はこのCookieをセットするとき以外この関数を今の所使用したことがありません。
templateは tempalte_name
で読み込むし、context
は get_context_data()
を使うのであまり出番がない関数ですよね。
実際にクラスベースビューでCookieをセットする時はこんな感じになります。
super()ender_to_response()
で親クラスの設定を取ってきて、response.set_cookie('key', 'value')
でCookieをセットするだけです。関数を使ったビューと同じくすごく単純です。
まとめ
- Cookieは
response.set_cookie('key', 'value')
でセットする - 関数ビューの場合は
render(request, template, context)
の結果に対してCookieをセット - クラスベースビューの場合は
render_to_response()
の中でCookieをセット
特にこれと言って難しいところは無いのでぜひお試しください。
コメントを残す