Flask-sijax
提供:Dev Guides
フラスコ– Sijax
*Sijax* は*「Simple Ajax」*の略で、 *Ajax* をアプリケーションに簡単に導入できるように設計された *Python/jQuery* ライブラリです。 *jQuery.ajax* を使用してAJAXリクエストを作成します。
インストール
Flask-Sijaxのインストールは簡単です。
pip install flask-sijax
設定
- SIJAX_STATIC_PATH -Sijax javascriptファイルをミラーリングする静的パス。 デフォルトの場所は static/js/sijax です。 このフォルダーには、 sijax.js および json2.js ファイルが保持されます。
- SIJAX_JSON_URI -json2.js静的ファイルをロードするURI
Sijaxは JSON を使用して、ブラウザーとサーバー間でデータを渡します。 つまり、ブラウザーは JSON をネイティブでサポートするか、 json2.js ファイルから JSON サポートを取得する必要があります。
この方法で登録された関数は、デフォルトで POST メソッドを使用してアクセスできないため(およびSijaxはPOST要求を使用するため)、 Sijax 機能を提供できません。
*Sijax* リクエストを処理できる *View* 関数を作成するには、* @ app.route( '/url'、methods = ['GET'、 'POST'])*を使用してPOSTでアクセスできるようにするか、 *@ flask_sijax.route* このようなヘルパーデコレータ-
@flask_sijax.route(app, '/hello')
(このような)すべてのSijaxハンドラー関数は、Pythonがオブジェクトメソッドに「自己」を渡すように、少なくとも1つのパラメーターを自動的に受け取ります。 'obj_response' パラメータは、関数がブラウザに応答する方法です。
def say_hi(obj_response):
obj_response.alert('Hi there!')
Sijax要求が検出されると、Sijaxは次のように処理します-
g.sijax.register_callback('say_hi', say_hi)
return g.sijax.process_request()
Sijaxアプリケーション
最小限のSijaxアプリケーションコードは次のようになります-
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('sijaxexamplel')
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に指示します。