Flask - передать ввод формы в url_for - PullRequest
1 голос
/ 16 апреля 2019

У меня есть шаблон HTML, который позволяет пользователю выбирать дату с помощью jQuery datepicker.

Как передать выбранную дату в действие?

Идея состоит в том, что пользователь выбираетdate, затем это передается в route.py Flask через app.route("/date/<date>")

calendar.html

{% block topscripts %}
    <link rel="stylesheet" type="text/css" href= "{{ url_for('static',filename='styles/calendar.css') }}">
    <script>
        $(function() {
            $("#datepicker").datepicker({dateFormat: 'yy-mm-dd'});
        });
    </script>    
{% endblock %}

{% block content %}
<form method="post" action="{{ url_for('specific_date', date='2019-04-11') }}">
<p>Date: <input type="text" id="datepicker"  name='go-to-date'></p>
    <input type="hidden" name="calendar-form">
    <input type="submit">
</form>
{% endblock %}

Итак, когда пользователь выбирает дату в ID datepicker, я хочучтобы передать эту дату url_for.В настоящее время я жестко запрограммировал дату (2019-04-11), просто чтобы убедиться, что она работает, и она работает.Как сделать так, чтобы эта часть была динамичной по отношению к тому, что пользователь выбирает в календаре?

... Если это поможет, вот в файле rout.py (default_template() - это функция, которая выводит шаблон в конце).:

@app.route("/date/<date>/", methods=["GET", "POST"])
def specific_date(date):
    print("\n\nDate:", date, "\n\n")
    images = get_files_on(date)
    print("\n\nSpecific date images:", images)
    return default_template(date=date, image_list=images)

1 Ответ

2 голосов
/ 17 апреля 2019

Сделайте POST-запрос к маршруту /date следующим образом.

Изменения на calendar.html:

{% block content %}
<form method="post" action="{{ url_for('specific_date') }}">
<p>Date: <input type="text" id="datepicker"  name='go-to-date'></p>
    <input type="hidden" name="calendar-form">
    <input type="submit">
</form>
{% endblock %}

Изменения на маршруте date:

from flask import request

# only allow POST request method
@app.route("/date/", methods=["POST"])
def specific_date():
    # getting the date from the POST request
    date = request.form['go-to-date']
    print("\n\nDate:", date, "\n\n")
    images = get_files_on(date)
    print("\n\nSpecific date images:", images)
    return default_template(date=date, image_list=images)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...