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: ru.oldtoolbag.com
# Date: 2020-08-08
pip install flask-sijax

Конфигурация

SIJAX_STATIC_PATH - Статический путь файла javascript 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: ru.oldtoolbag.com
# Date: 2020-08-08
@flask_sijax.route(app, '/hello')

Каждая обработка функции Sijax (например) автоматически принимает по крайней мере один параметр, так же, как Python передает 'self' объектным методам. Параметр 'obj_response' - это объект, возвращаемый функцией браузеру.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.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: ru.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: ru.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 о необходимости выполнения соответствующего (ранее зарегистрированного) функции и возвращении ответа браузеру.