【Django】クラスベースビューでCookieを保存する方法

DjangoクラスベースビューでCookieを保存する方法

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

今回は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 で読み込むし、contextget_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をセット

特にこれと言って難しいところは無いのでぜひお試しください。

コメントを残す

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