FlaskのCookiesの設定、保存や取得等の使い方を分かりやすく解説する

スポンサーリンク

この記事では、Flask の Cookie を扱い、Flask Web Application で使用することにします。

では、シートベルトを締めて、始めましょう。

スポンサーリンク

クッキーとは何ですか?

クッキーまたは HTTP クッキーは、テキストファイルで、クライアントのコンピュータに保存されます。

各クッキーは、クライアントブラウザのクッキー設定に基づき、永久的または特定の有効期限まで保存することができます

クッキーは、有効期限に達すると、自動的にクライアントブラウザから削除されます。

クライアント側に存在するクッキーは、ウェブ上でのユーザーの行動を追跡し、記憶します。

この情報は、後でユーザーの全体的なサイト体験を向上させるために使用されます。

クッキーはどのように機能するのですか?

ご存知のように、HTTPはステートレスプロトコルです。

つまり、サーバーはユーザーが初めてサイトを訪れたかどうかを区別することができません。

そこで、この問題を解決するために、サイトはクッキーを使用します。

したがって、クライアントがあるサイトに初めてアクセスしたとき、そのサイトが設定したクッキーはありません。

そこで、サーバーは新しいクッキーを作成し、それをクライアントのコンピュータ自体に送信します。

そのため、次回以降の訪問では、クライアントのコンピュータは、リクエストにクッキーを添付して送信します。

その後、サーバーはリクエストオブジェクトからクッキーを取り出し、そのクッキー情報を使ってサイトのユーザーエクスペリエンスを向上させるのです。

なぜクッキーは使われるのですか?

一言で言えば、ユーザーの活動を保存し追跡することで、サイト上でより良いユーザー体験を提供するためにクッキーを使用しています。

また、サイトの有効期限、パス、ドメインなどの情報も保存されます。

クッキーがその役割を果たす場所には、次のようなものがあります。

  • 電子商取引やFacebookのようなソーシャルメディアサイトでは、ログアウトせずにサイトを離れると、次にサイトを訪れたときにあなたのアカウントがログインしたままになっていることに気づいたかもしれません。
  • 多くのeコマースサイトでは、ブラウザの以前の検索情報に基づいて、異なる製品に関する推奨事項を得ることができます。

これらはすべてクッキーを使って行われています。

Flask Cookieの設定ハンズオン

Flaskでは、Cookieはレスポンスオブジェクトに設定されます。

つまり、サーバーはレスポンスと一緒にCookieをユーザーに送ります。

これはmake_response()関数で行います。

レスポンスが設定されたら、set_cookie()関数を使ってCookieをアタッチします。

クッキーは以下の属性を持ちます。

response.set_cookie('<Title>','<Value>','<Expiry Time>')

したがって、コードは次のようになります。

@app.route('/setcookie')
def setcookie():
    resp = make_response(f"The Cookie has been set")
    resp.set_cookie('Name','AskPython')
    return resp

シンプルですね。

さて、私たちはユーザーからクッキーを取り戻す必要があります。

クッキーはサーバーへのリクエストと一緒に送り返されます。

request.cookies.get()関数を使って、それを取得します。

そこで、次のコードを考えてみましょう。

@app.route('/getcookie')
def getcookie():
    name = request.cookies.get('Name', None)
    return f"The Site : {name}"

ここで、Cookieの情報はname変数に格納されています。

したがって、最終的なメインアプリケーションファイルは次のようになります。

from flask import Flask, make_response, request
 
app = Flask(__name__)
 
@app.route('/setcookie')
def setcookie():
    resp = make_response(f"The Cookie has been Set")
    resp.set_cookie('Name','AskPython')
    return resp
 
@app.route('/getcookie')
def getcookie():
    name = request.cookies.get('Name')
    return f"The Site : {name}"
 
app.run(host='localhost', port=5000)

コードの実装

サーバーを起動し、”/setcookie “にアクセスしてみましょう。

Set Cookie
Set Cookie

そして”/getcookie “にアクセスします。

Get Cookie
Get Cookie

完璧ですね。

まとめ

以上、みなさん。

今回はFlask Cookieについてでした。

より深く理解するために、各自でコードを試してみてください。

では、また次回

タイトルとURLをコピーしました