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

时间:2015-02-06 15:11:21

标签: flask jinja2

我有一个模板,它正在对表的字段进行一些操作:

<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))

我想从模板中发送字段。

整个想法是,将表中的某些字段作为指向外部网站的超链接,当这些超链接的地址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

2 个答案:

答案 0 :(得分:4)

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

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

接受路径参数。

答案 1 :(得分:1)

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

做完了。