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

Flask Sijax

Sijaxは「Simple Ajax」を意味し、Pythonの/jQueryライブラリは、Flask開発者にAjaxを簡単にアプリケーションに導入するために設計されています。それを使用してjQuery.ajaxを通じてAJAXリクエストを送信します。

インストール

Flask-Sijaxのインストールは非常に簡単で、以下のコマンドを使用します -

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

設定

SIJAX_STATIC_PATH - Sijaxのjavascriptファイルの静的パス。デフォルト位置はstatic/js/sijax。このフォルダーにsijax.jsとjson2.jsファイル。 SIJAX_JSON_URI - JSONをロードします2.js静的ファイルのURI

SijaxはJSONを使用してブラウザとサーバー間でデータを伝搬します。したがって、ブラウザはローカルでJSONをサポートする必要がありますか、json2.jsファイルにJSONサポートを取得します

このように登録された関数は、デフォルトではPOSTメソッドを使用してアクセスできないため(SijaxはPOSTリクエストを使用します)、Sijax機能を提供できません

View関数がSijaxリクエストを処理できるようにするには、以下を使用します @app.route('/url',methods = ['GET','POST'])をPOSTでアクセスするか、以下のように使用します @flask_sijax.routeアシスタントデコレータ -

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

各Sijaxハンドラ関数(以下のように)は、Pythonがオブジェクトメソッドに'self'を渡すように、少なくとも1つの引数を受け取ります。 'obj_response'パラメータは、関数がブラウザに返すオブジェクトです。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ja.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 : ja.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 : ja.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 request detected - let Sijax handle it
        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が適切な(以前に登録された)関数を実行し、レスポンスをブラウザに返すことを伝えます。