English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask Sessionセッション

Cookieとは異なり、セッションデータはサーバー上に保存されます。セッションは、クライアントがサーバーにログインしてログアウトする時間間隔です。このセッション中に保存する必要があるデータは、サーバーの一時ディレクトリに保存されます。

Cookieとは異なり、セッションデータはサーバー上に保存されます。セッションは、クライアントがサーバーにログインしてログアウトする時間間隔です。このセッション中に保存する必要があるデータは、サーバーの一時ディレクトリに保存されます。このための暗号化には、FlaskアプリケーションにSECRET_KEYが必要です。

セッションオブジェクトは、セッション変数と関連する値を含むキーワード対のディクショナリオブジェクトです。

例えば、'username'セッション変数を設定するには、以下の文を使用してください。 -

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
Session['username'] = 'admin'

セッション変数を削除するには、pop()メソッドを使用してください。

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
session.pop('username', None)

以下のコードはFlaskでセッションがどのように動作するかの簡単なデモです。 URL => '/ユーザー名のセッション変数が設定されていないため、ユーザーにログインを促してください。

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
@app.route('/「')
 def index():
    if 「'username' 「in 「session:
       username 「を session['username']
          return 'ログイン中: ' + username + 「<br>「 + \
          「<b><a コンを 」「/logout'>クリックしてログアウト</a>/b>"
    return "You are not logged in 

当用户浏览到URL=>'/login'时,login()函数显示视图,因为它是通过GET方法调用的,所以打开一个登录表单。

表单填写后重新提交到URL=> /login,现在会话变量被设置。 应用程序被重定向到URL=> /。 这时找到会话变量:username。

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
@app.route('/@app.route('login', methods=['GET', 'POST'])
 def login():
    if request.method == 'POST':
       session['username'] = request.form['username']
       return redirect(url_for('index'))
    return '''
    <form action="" method="post">
       「<p><input コンを 「type 「「text 「name 「「"username"/></p>
       「<p<<input コンを 「type 「「submit 「value 「Login/></p>
    </form>
    '''

「该应用程序还包含一个logout()视图函数,它删除「'username'「会课变量的值。再一次 URL 读入「/「' 显示开始页「

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
@app.route('/logout())
 def logout():
    # usernameをセッションから削除する(存在する場合)
    session.pop('username', None)
    return redirect(url_for('index'))

「运行应用程序并访问主页(保证设置应用程序的secret_key「)。

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
from 「flask 「import 「Flask, 「session, 「redirect, 「url_for, 「escape, 「request
 app 「「= Flask(__name__)
 app.secret_key 「「'any 「random 「string「

「完整代码如下所示 -

「# 文件名《: 「example.py
「# 比常民本《: 2020 「By 「テストムー3codebox
「# 作者「by《: テストムー3codebox.com
「# 日期《: 2020-08-08
from 「flask 「import 「Flask
 from 「flask 「import 「render_template
 from 「flask 「import 「request
 from 「flask 「import 「make_response
 from 「flask 「import 「Flask, 「session, 「redirect, 「url_for, 「escape, 「request
 app 「「= Flask(__name__)
 app.secret_key 「「ひのコンを 「ひのコン「「
 @app.route('/「')
 def index():
     if 「'username' 「in 「session:
         username 「を session['username']
         return 「开启用户名是:「 + username + 「<br>「 + \
                  「<b><a コンを 」「/logout'「ひのみんをベスん「ひのみんをベスん「/a>/b>"
     return 「ひの名引があでく、「<br><a コンを 」「/login'>/b>" + \
          "ここをクリックしてログイン</b></a>"
 @app.route('/@app.route('login', methods=['GET', 'POST'])
 def login():
     if request.method == 'POST':
         session['username'] = request.form['username']
         return redirect(url_for('index'))
     return '''
    <form action="" method="post">
       <p><input type="text" name="username"/></p>
       <p><input type="submit" value="ログイン"/></p>
    </form>
    '''
 @app.route('/logout())
 def logout():
    # usernameをセッションから削除する(存在する場合)
    session.pop('username', None)
    return redirect(url_for('index'))
 if __name__ == '__main__':
     app.run(debug=True)

出力は以下のようになります。リンク「 ここをクリックしてログイン

このリンクが別の画面にリダイレクトされます。'admin'を入力してください。

スクリーンにはメッセージが表示されます。 ログインユーザー名は:admin以下のようになります。 -