【问题标题】:Flask Blueprint method not receiving Jinja argumentFlask Blueprint 方法没有收到 Jinja 参数
【发布时间】:2017-09-15 12:35:58
【问题描述】:

只要我在方法中输入参数,我的蓝图方法就会失败:

TypeError: get_streetreport() missing 1 required positional argument: 'number'

从 Jinja 打来的电话:

<form class="form-horizontal" action = "{{ url_for('street_reports.get_streetreport', number=number) }}" method="post">

仅供参考,我可以在同一个调用页面上看到变量编号:

<p>You have entered "{{ number }}" in the property name/number field on the previous page.</p>

这是被调用的蓝图方法:

@street_report_blueprint.route('/street_report', methods=['POST', 'GET'])
def get_streetreport(number):
    mainselection = request.form['MainlistRadios']
    return render_template('street_reports/street_report.jinja2', mainselection = mainselection)

如果我从 get_streetreport() 中删除参数,页面在本地主机上加载正常。 'number' 是一个字符串变量。发送任何帮助。

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    更新:需要在路由路径中声明参数。

    @street_report_blueprint.route('/street_report/&lt;number&gt;', …)

    如果 number 预期为整数,则应为 .../&lt;int:number&gt;

    http://flask.pocoo.org/docs/0.12/quickstart/#variable-rules

    要将可变部分添加到 URL,您可以将这些特殊部分标记为 .然后将这样的部分作为关键字参数传递给您的函数。可选地,可以通过使用 指定规则来使用转换器。


    需要将number参数传入render_template

    return render_template(....., number=number)

    【讨论】:

    • 好的,我已经更改了最后一行来测试这个:'return render_template('street_reports/street_report.jinja2', number = number)' 但仍然是相同的错误消息。
    • 谢谢@Ivan 我的理解是 action = "{{ url_for('street_reports.get_streetreport', number=number) }}" 正在将参数 'number' 传递给 get_streetreport 方法,并且错误说 get_streetreport 缺少参数。我认为错误实际上不在 render_template 行中,但我是 Flask 的初学者。如果我知道需要什么,我会提供更多信息。重新投反对票,我已经努力在 Google 和 SO 上搜索答案,但没有找到。同样,我已尽我所能为其命名。
    • Ps 我认为不赞成投票是没有根据的。为你+1。祝你好运!
    • 感谢@Ivan,现在可以了,我应该考虑检查一下 jinja pocoo!但如果没有你告诉我,可能无论如何都不会点击。这告诉我现在无论如何我的方法是错误的,我认为我可以在方法参数中将一个完整的对象传递给 Flask 蓝图方法,然后使用 render_template 将此对象传递给网页,但这显然不实用。也许我可以以某种方式将对象放入表单中并使用 form.request 传递整个对象,有点破解,但这是演示应用程序和时间紧迫,会看到。
    • 您也可以查看request.values接收表单查询/发布数据。 flask.pocoo.org/docs/0.12/api/#incoming-request-data
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    相关资源
    最近更新 更多