IscanderChe
30 квітня 2024 р. 13:22

Во Flask рендер шаблона не передаётся в браузер

Python, Flask

Доброе утро!

Имеется вот такой шаблон:

<!doctype html>
<html>
    <head>
        <title>{{ title }}</title>
        <link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap-5.3.2/css/bootstrap.min.css') }}">
        <script src="{{ url_for('static', filename='css/bootstrap-5.3.2/js/bootstrap.bundle.min.js') }}"></script>
        <script src="{{ url_for('static', filename='js/script.js') }}"></script>
    </head>
    <body>
        <p>Tag: {{ tag }}, Button: {{ button }}</p>
        <form id="tag_form" method="POST">
            <label for="text">Tag</label> <input id="text" name="text" size="20" type="text" value="">
            <button id="btn" type="button" class="btn btn-outline-secondary btn-sm" data-bs-toggle="button">Personal</button>
            <input id="submit" name="submit" type="submit" value="Add tag">
        </form>
    </body>
</html>

JS-скрипт прикрепляет к POST-запросу дополнительные данные:

document.addEventListener('DOMContentLoaded', (event) => {
    form = document.getElementById('tag_form');

    function readButton(event) {
        event.preventDefault();
        const formSent = new FormData(form);
        const xhr = new XMLHttpRequest();
        const button = document.getElementById('btn').getAttribute('aria-pressed')
        formSent.append('button', button);
        xhr.open('POST', 'http://127.0.0.1:5000');
        xhr.send(formSent);
        return false;
    }

    form.addEventListener('submit', readButton);
});

Python-обработчик эти данные корректно принимает:

from flask import Flask
from flask import render_template, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def print_form_data():
    if request.method == 'POST':
        tag = request.form.get('text')
        button = request.form.get('button')
        return render_template('index.html', title='Add tag', tag=tag, button=button) # эта строка шаблон с полученными данными не выводит
    return render_template('index.html', title='Add tag') # эта строка выводит шаблон

В консоли браузера ответ получается корректно, а на самой страничке ничего не показывается. Почему?

1

Вам це подобається? Поділіться в соціальних мережах!

0

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up