Фляжка - Сиджакс
Sijax означает ‘Simple Ajax’ и это Python/jQuery библиотека, разработанная, чтобы помочь вам легко принести Ajaxв ваше приложение. Оно используетjQuery.ajax делать запросы AJAX.
Установка
Установить Flask-Sijax очень просто.
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 запросы, сделайте его доступным через POST, используя @app.route('/url', methods = ['GET', 'POST']) или используйте @flask_sijax.route вспомогательный декоратор вроде этого -
@flask_sijax.route(app, '/hello')
Каждая функция-обработчик Sijax (например, эта) получает по крайней мере один параметр автоматически, так же как Python передает 'self' методам объекта. В‘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('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 выполнить соответствующую (ранее зарегистрированную) функцию и вернуть ответ браузеру.