English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يتطلب تطبيق واجهة المستخدم الرسومية تقديم ملاحظات تفاعلية للمستخدم. على سبيل المثال، يستخدم تطبيقات سطح المكتب نافذات الحوار أو نافذات الرسائل، ويستخدم JavaScript دالة alert() لأغراض مشابهة.
من السهل إنشاء رسائل معلوماتية في تطبيقات الويب Flask. يتيح نظام الظهور في إطار Flask إمكانية إنشاء رسالة في رؤية واحدة وعرضها في وظيفة رؤية تُسمى next.
يحتوي مكتبة Flask على طريقة flash(). تمرر الرسالة إلى الطلب التالي، الذي يكون عادة نموذج.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 flash(message, category)
في هذا -
الرسالة - هو الرسالة الفعلية التي سيتم تحديثها. فئة - هو اختياري. يمكن أن يكون "خطأ"، "معلومات" أو "تحذير".
لإزالة الرسائل من الجلسة، يتم استدعاء دالة get_flashed_messages() في النموذج.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 get_flashed_messages(with_categories, category_filter)
كلاهما اختياريان. إذا كان لديك رسالة مع فئة، فإن الأول هو زوج. الثانية مفيدة جدًا لعرض رسالة معينة.
إليك نموذج الظهور الذي استلم الرسالة.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 {% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %} {{ message }} {% endfor %} {% endif %} {% endwith %}
الآن دعونا نرى مثالاً بسيطاً يوضح آلية الظهور في Flask. في الكود التالي، URL => "/" يعرض رابط إلى صفحة تسجيل الدخول دون تحديد رسالة لارسالها.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 @app.route('/') def index(): return render_template('index.html')
الرابط التالي يقود المستخدم إلى عنوان URL لعرض نموذج تسجيل الدخول => "/login". عند الإرسال، يقوم دالة login() بتحقق من اسم المستخدم وكلمة المرور ويعرض رسالة "نجاح" أو "خطأ".
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 @app.route('/login', methods=['GET', 'POST']) def login(): error = None if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'admin': error = 'Invalid username or password. Please try again!' else: flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error)
إذا كان هناك خطأ، سيتم عرض نموذج تسجيل الدخول مرة أخرى وعرض رسالة الخطأ.
ملف النمذجة: login.html كود التالي -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>مثال Flask</title> </head> <body> <h1>تسجيل الدخول</h1> {% if error %} <p><strong>خطأ:</strong> {{ error }}</p> {% endif %} <form action = "/login" method="POST"> <dl> <dt>用户名:</dt> <dd> <input type=text name="username" value="{{request.form.username}}"> </dd> <dt>密码:</dt> <dd><input type="password" name="password"></dd> </dl> <p><input type=submit value="登录"></p> </form> </body> </html>
如果登录成功,则在索引模板上闪现成功消息。以下代码保存在文件( index.html) -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask消息闪现</title> </head> <body> {% with messages = get_flashed_messages() %} {% if messages %} <ul class=flashes> {% for message in messages %} <li>{{ message }}</li> {% endfor %} </ul> {% endif %} {% endwith %} <h1>Flask Message Flashing Example</h1> <p>您想要<a href="{{ url_for('login') }}"> <b>登录?</b></a></p> </body> </html>
Flask消息闪现示例的完整代码如下所示 -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ar.oldtoolbag.com # Date: 2020-08-08 from flask import Flask, flash, redirect, render_template, request, url_for app = Flask(__name__) app.secret_key = 'random string' @app.route('/') def index(): return render_template('index.html') @app.route('/login', methods=['GET', 'POST']) def login(): error = None print(request.method) if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'admin': error = 'Invalid username or password. Please try again!' else: #flash('您已成功登录') flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error) if __name__ == "__main__": app.run(debug=True)
بعد تنفيذ الكود المذكور أعلاه، سترى الشاشة التالية.
عند النقر على الرابط، سيتم التحويل إلى صفحة الدخول. أدخل اسم المستخدم وكلمة المرور -
انقر دخولالزر. سيتم عرض رسالة "لقد قمت بالدخول بنجاح".