Flask - 将表单输入传递给url_for

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (245)

我有一个HTML模板,允许用户通过jQuery datepicker选择日期。

如何将所选日期传递给某个动作?

这个想法是,用户选择一个日期,然后传递给Flask的route.py,via 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 %}

因此,当用户在datepickerID中选择日期时,我想将该日期传递给url_for。目前我硬编码date(2019-04-11)只是为了检查它是否有效,而且确实如此。如何让用户在日历中选择的部分是动态的?

...如果它有帮助,这里是routes.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)
提问于
用户回答回答于

/date像这样对路由发出POST请求。

变更为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)

扫码关注云+社区

领取腾讯云代金券