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

جلسة Flask (Session)

مختلفًا عن الكوكي، يتم تخزين بيانات الجلسة على الخادم. الجلسة هي فترة تسجيل الدخول للعميل على الخادم وإلغاء التسجيل. يتم تخزين البيانات التي يجب تخزينها في هذه الجلسة في مجلد مؤقت على الخادم.

تُعين لكل جلسة للعميل معرف الجلسة. يتم تخزين بيانات الجلسة في الجزء العلوي من الكوكي، ويتم توقيعها بشكل مشفر من قبل الخادم. بالنسبة لهذا التشفير، يحتاج تطبيق Flask إلى تعريف SECRET_KEY.

كذلك فإن جسم الجلسة هو دليل من أنواع البيانات التي تحتوي على قيم متغيرات الجلسة وكذلك القيم المرتبطة بها.

على سبيل المثال، لتحديد متغير الجلسة 'username'، استخدم الجملة -

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
Session['username'] = 'admin'

لإزالة متغير الجلسة، استخدم طريقة pop().

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
session.pop('username', None)

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
@app.route('/')
 تعريفُ function index():
    إذا كان 'username' في session:
       username = session['username']
          ترجيع 'مدخلًا كـ' + username + '<br>' + \",
          
    ترجيع "لم يتم تسجيل الدخول <br><a href='/login'></b>" + \",
       "نقر هنا للدخول</b></a>"

عندما يتصفح المستخدم URL=>'/login'، يعرض function login() الرؤية لأنه تم استدعاؤه عبر طريقة GET، لذا يتم فتح نموذج الدخول.

بعد ملء النموذج، قم بإعادة إرساله إلى URL=> /login، الآن تم تعيين متغير session. يتم توجيه التطبيق إلى URL=> /. عند هذا الحين يتم العثور على متغير session: username.

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
@app.route('/login', methods=['GET', 'POST'])
 def login():
    if request.method == 'POST':
       session['username'] = request.form['username']
       return redirect(url_for('index'))
    
    <form action="" method="post">
       <p><input type='text' name='username'/></p>
       <p><input type='submit' value='Login'/></p>
    </form>
    

يحتوي هذا التطبيق أيضًا على function logout() التي تزيل قيمة متغير session['username']. ثم القفز إلى URL '/'. يظهر الصفحة الرئيسية.

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
@app.route('/logout')
 def logout():
    # remove the username from the session if it is there
    session.pop('username', None)
    return redirect(url_for('index'))

شغل التطبيق وانتقل إلى الصفحة الرئيسية (تأكد من تعيين secret_key للتطبيق).

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
من Flask وارد Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'any random string’

كود الكامل يظهر أدناه -

# اسم الملف : example.py
# حقوق النشر : 2020 بواسطة w3codebox
# كاتب : ar.oldtoolbag.com
# تاريخ : 2020-08-08
من Flask وارد Flask
 من Flask وارد render_template
 من Flask وارد request
 من Flask وارد make_response
 من Flask وارد Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
 @app.route('/')
 تعريفُ function index():
     إذا كان 'username' في session:
         username = session['username']
         رجوع 'اسم المستخدم المسجل دخول:' + username + '<br>' + ",
                  "<b><a href='/logout'>انقر هنا للخروج</a></b>"
     رجوع "لم يتم تسجيل الدخول بعد، <br><a href='/login'></b>" + ",
          "انقر هنا للدخول</b></a>"
 @app.route('/login', methods=['GET', 'POST'])
 def login():
     if request.method == 'POST':
         session['username'] = request.form['username']
         return redirect(url_for('index'))
     
    <form action="" method="post">
       <p><input type="text" name="username"/></p>
       <p><input type="submit" value="الدخول"/></p>
    </form>
    
 @app.route('/logout')
 def logout():
    # remove the username from the session if it is there
    session.pop('username', None)
    return redirect(url_for('index'))
 if __name__ == '__main__':
     app.run(debug=True)

سيتم عرض الناتج كما يلي. انقر على الرابط: انقر هنا للدخول

الرابط سيتم توجيهه إلى واجهة أخرى. أدخل 'admin'.

سيتم عرض رسالة على الشاشة: اسم المستخدم المسجل الدخول هو:adminمثلاً -