Передача данных из Flask в JavaScript: шаблоны Jinja, запросы AJAX, конечные точки API, скрытые входные данные HTML

Чтобы передать данные из Flask в JavaScript, вы можете использовать несколько методов. Вот некоторые из наиболее распространенных:

  1. Шаблоны Jinja: Flask по умолчанию использует механизм шаблонов Jinja. Вы можете встраивать переменные Flask непосредственно в свои HTML-шаблоны, используя двойные фигурные скобки {{ }}. Например, вы можете передавать данные из Flask в JavaScript, визуализируя шаблон с необходимыми данными и обращаясь к ним из вашего кода JavaScript.

    # Flask route
    @app.route('/')
    def index():
       data = {'name': 'John', 'age': 25}
       return render_template('index.html', data=data)
    <!-- index.html -->
    <script>
       var data = {{ data|tojson }};
       console.log(data.name);
    </script>
  2. Запросы AJAX. Вы можете выполнять запросы AJAX из JavaScript для получения данных из Flask. Flask предоставляет функцию jsonifyдля преобразования объектов Python в формат JSON, который может легко использоваться JavaScript.

    # Flask route
    @app.route('/data')
    def get_data():
       data = {'name': 'John', 'age': 25}
       return jsonify(data)
    // JavaScript
    fetch('/data')
       .then(response => response.json())
       .then(data => {
           console.log(data.name);
       });
  3. Конечные точки API. В Flask можно создавать выделенные конечные точки API, которые возвращают ответы в формате JSON. К этим конечным точкам можно получить доступ с помощью JavaScript для получения данных.

    # Flask route
    @app.route('/api/data')
    def get_api_data():
       data = {'name': 'John', 'age': 25}
       return jsonify(data)
    // JavaScript
    fetch('/api/data')
       .then(response => response.json())
       .then(data => {
           console.log(data.name);
       });
  4. Скрытые входные данные HTML. Если у вас небольшой объем данных, вы можете сохранить их в скрытых входных HTML-файлах и получить доступ к этим значениям в JavaScript.

    # Flask route
    @app.route('/')
    def index():
       data = {'name': 'John', 'age': 25}
       return render_template('index.html', data=data)
    <!-- index.html -->
    <input type="hidden" id="data" value="{{ data|tojson }}">
    <script>
       var data = JSON.parse(document.getElementById('data').value);
       console.log(data.name);
    </script>

Это всего лишь несколько способов передачи данных из Flask в JavaScript. Выбор метода зависит от вашего конкретного случая использования и требований.