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に指示します。