Почему render_template не выражается? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть рабочее приложение для фляги, настроенное на HTML-странице.Проблема в том, что в моем HTML, где у меня есть {{ Appointments }}, он всегда показывает значение второго render_template пустого списка.

@app.route("/PatientDashboard.html", methods=["GET", "POST"])
def PatientDashboard():

    if request.method == "POST":
        Date = request.form.get("Date")
        print(Date)
        return render_template("PatientDashboard.html", Appointments=["This should show up."])

    else:
        return render_template("PatientDashboard.html", Appointments=[]) 

Проблема в том, что первый render_templateникогда не выражается.Почему это так и как мне это решить?

Заранее большое спасибо.

РЕДАКТИРОВАТЬ 1:

Соответствующий HTML-код приведен ниже.

<script>
    var jsDate = $('#calendar').datepicker({
        inline: true,
        firstDay: 1,
        showOtherMonths: false,
        dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
        onSelect: function(dateText, inst) {
            document.getElementById("Date").innerHTML = dateText;
            $.ajax({
                type: 'POST',
                url: "{{ url_for('PatientDashboard') }}",
                data: {Date: dateText},
                dataType: "text",
            });
        }
    });
</script>

Далее у меня есть {{ Appointments }} в делителе.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы получаете содержимое отрендеренного шаблона с Appointments в ответ на ваш запрос POST.Если вы хотите использовать Appointments данные на своей странице, вам нужно расширить свой запрос POST обратным вызовом, который будет использовать эти данные для всего, что вам нужно.

Итак, что в основном происходит:

  1. Страница загружается (запрос GET), шаблон отображается с пустым Appointments списком
  2. Страница запускает запрос POST ajax, который возвращает обработанный шаблон с Appointments set
  3. Вы не являетесьобрабатывает ответ POST, следовательно, эти данные просто отбрасываются.

Типичный подход заключается в получении только соответствующих данных (например, в формате JSON) из ответа POST, а не полной страницы:

from flask import Response

if request.method == "POST":
    Date = request.form.get("Date")
    print(Date)
    Appointments=["This should show up."]
    return Response(json.dumps(Appointments), mimetype='application/json')
else:
    return render_template("PatientDashboard.html", Appointments=[]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...