如何将参数从模板传递到 Flask 中的视图

How to pass argument from template to view in Flask

我有一个模板,它正在对 table:

的字段进行一些操作
<tr>
    {% for field in row %}
        {% if field is link_field %}
            <td><a href="{{ url_for('munin') }}">{{ field | table_field | safe }}</a></td>
        {% else %}
            <td>{{ field | table_field | safe }}</td>
        {% endif %}
    {% endfor %}
</tr>

我认为:

@app.route("/munin")
def munin(field):
        return redirect("http://{0}/munin".format(field))

我想从模板发送字段。

整个想法是,将table中的某些字段作为指向外部站点的超链接,当这些超链接的地址http是字段的属性(例如ip地址)时。

我试过这样做:

<tr>
    {% for field in row %}
        {% if field is link_field %}
            <td><a href="{{ url_for('munin', field=field) }}">{{ field | table_field | safe }}</a></td>
        {% else %}
            <td>{{ field | table_field | safe }}</td>
        {% endif %}
    {% endfor %}
</tr>

但不是将我发送到站点:

http://field/munin

它将我发送至:

http://mysite/munin?field=field

您的路由配置不处理任何 field 参数。调整路线:

@app.route("/munin/<field>")
def munin(field):
    return redirect("http://{0}/munin".format(field))

接受路径参数。

from flask import request
field = request.args.get('field')

完成任务。