cookieに値を保存する処理も、再保存する場合の処理も、上記のコードで問題ないと思います。
おそらく他の箇所で問題がありそうです。
- リダイレクトする時に、cookieをセットしたresponseをreturnしていない
- ブラウザのcookieの表示が更新されていない
おそらく上2つのどちらかが原因だと思います。
1についてですが、cookieに値をセットした処理を記述しても、リダイレクトの処理の書き方によっては、cookieをセットしていない形でリダイレクトされてしまいます。
例えば、
python3
1@current_app.route('/hoge')
2def hoge():
3 data = 〜
4 redirect_to_index = redirect('/')
5 response = current_app.make_response(redirect_to_index)
6 response.set_cookie('cookie_name', data)
7 return redirect('/')
のように、書いてしまうと、cookieをセットしたResponseオブジェクトとは別のResponseオブジェクトが返されてしまうとため、cookieの値が設定されません。
2に関しては、ブラウザのデベロッパーツールなどで、cookieがセットされているかどうかを確認されているかと思いますが、時々ブラウザ側のデベロッパーツールでcookieの値が更新されていない場合があります。その場合は、cookieの表示画面でRefreshボタンを押すと正常に表示されるようになります。
参考までに、flaskで、cookieに現在時刻を保存してリダイレクトするサンプルを載せておきます。。。
python3
1from flask import Flask, redirect
2import datetime
3
4current_app = Flask(__name__)
5
6@current_app.route('/')
7def index():
8 return 'Hello'
9
10@current_app.route('/set')
11def next():
12 redirect_to_index = redirect('/')
13 response = current_app.make_response(redirect_to_index)
14 response.set_cookie('cookie_name', str(datetime.datetime.now()))
15 return response
16
17if __name__ == '__main__':
18 current_app.debug = True
19 current_app.run(host='0.0.0.0', port=80)
20
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/04 07:08
2018/10/05 19:16
2018/10/06 04:33