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

Sijax Flask

Sijax تعني 'Simple Ajax'، وهي مكتبة Python/jQuery مصممة لمساعدة مطوري Flask على إدخال Ajax بسهولة إلى تطبيقاتهم. يستخدم jQuery.ajax لإرسال طلبات AJAX.

تثبيت

تثبيت Flask-Sijax بسيط للغاية، باستخدام الأمر التالي -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
pip install flask-sijax

الإعداد

SIJAX_STATIC_PATH - مسار ملفات الجافا سكربت الم静态 لـ Sijax. الموقع الافتراضي هو static/js/sijax. يحتوي هذا المجلد على ملفات sijax.js وjson2.js. SIJAX_JSON_URI - URI تحميل ملف json2.js الم静态

يستخدم Sijax JSON لنقل البيانات بين المتصفح والخادم. لذلك، يجب أن يكون لدى المتصفح دعم JSON محلي أو الحصول على دعم JSON من ملف json2.js.

لا يمكن لتلك الدوال المسجلة بهذه الطريقة تقديم وظائف Sijax، لأنها لا يمكنها الوصول إلى الطريقة POST بشكل افتراضي (ولأن Sijax يستخدم طلبات POST).

لجعل دالة عرض (View) قادرة على معالجة طلبات Sijax، يمكنك استخدام @app.route('/url', methods=['GET', 'POST']) يمكن الوصول إليها عبر POST، أو باستخدام @flask_sijaxمزود مساعد .route -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
@flask_sijax.route(app, '/hello')

كل دالة معالجة Sijax (مثل هذه) ستستلم تلقائيًا على الأقل معاملًا واحدًا، تمامًا مثل كيفية تسليم 'self' لأسلوب الكائن في بايثون. معامل 'obj_response' هو الكائن الذي يعود من الدالة إلى المتصفح.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
def say_hi(obj_response):
     obj_response.alert('Hi sijax!')

عند إدراك طلب Sijax، يتم التعامل معه مثل هذا من قبل Sijax -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
g.sijax.register_callback('say_hi', say_hi)
     return g.sijax.process_request()

تطبيق Sijax

كود أقل تطبيق Sijax يبدو كالتالي -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
import os
 from flask import Flask, g
 from flask_sijax import sijax
 path = os.path.join('.', os.path.dirname(__file__), 'static/js/sijax/')
 app = Flask(__name__)
 app.config['SIJAX_STATIC_PATH'] = path
 app.config['SIJAX_JSON_URI'] = '/static/js/sijax/json2.js'
 flask_sijax.Sijax(app)
 @app.route('/')
 def index():
    return 'Index'
 @flask_sijax.route(app, '/hello')
 def hello():
     def say_hi(obj_response):
        obj_response.alert('Hi there!')
     if g.sijax.is_sijax_request:
        # تم اكتشاف طلب Sijax - دع Sijax يعالجه
        g.sijax.register_callback('say_hi', say_hi)
        return g.sijax.process_request()
        return _render_template('sijaxexample.html')
 if __name__ == '__main__':
     app.run(debug=True)

عندما يطلب Sijax من الخادم (طلب خاص من jQuery.ajax())، يتم اكتشاف هذا الطلب بواسطة g.sijax.is_sijax_request() على الخادم، وفي هذه الحالة، يتم معالجة الطلب تلقائيًا بواسطة Sijax.

جميع الدوال التي يتم تسجيلها باستخدام g.sijax.register_callback() تعرض للتصفح من قبل المتصفح.

الاستدعاء g.sijax.process_request() يخبر Sijax عن تنفيذ الدالة المناسبة (المسجلة مسبقًا) وإرجاع الاستجابة إلى المتصفح.