使用url_for重定向到带有查询参数的路径

时间:2014-04-17 21:31:44

标签: python-2.7 flask

所以,假设我有一个带有几个链接的模板,链接将是这样的:

<a class='btn btn-primary' href='/?chart=new_chart&chart=other_chart'>View Summary</a>

但是,在我完成链接或包含资源的大部分时间里,我使用了以下语法:

<script src="{{ url_for('static', filename='some_silly_js') }}"></script>

是否可以使用查询参数执行url_for?类似的东西:

<a href="{{ url_for('stats', query_params={chart: [new_chart, other_chart]}) }}>View More</a>

2 个答案:

答案 0 :(得分:23)

路由不支持传递给url_for()的任何额外关键字参数会自动添加为查询参数。

对于重复的值,传入一个列表:

<a href="{{ url_for('stats', chart=[new_chart, other_chart]) }}>View More</a>

烧瓶将:

  1. 找到stats端点
  2. 填写所有必需的路线参数
  3. 将任何剩余的关键字参数转换为查询字符串
  4. 演示,'stats'/的端点名称:

    >>> url_for('stats', chart=['foo', 'bar'])
    '/?chart=foo&chart=bar'
    

答案 1 :(得分:1)

根据文档:

Variable arguments that are unknown to the target endpoint are appended to the generated URL as query arguments.

我已经试过了,它按照文档工作

redirect(url_for('face_id_detail', faceid=faceid, name=faceidtag))

注意:faceid 是方法中的参数 && name 不在方法参数中,所以它是附加到查询字符串中的。

face_id_detail 的方法签名是:

@app.route('/faceids/<faceid>')
def face_id_detail(faceid):
    # the method code