在新网址的当前GET请求中修改查询参数

时间:2015-06-29 16:31:46

标签: python url flask jinja2

我访问的路径为/mypage?a=1&b=1&c=1。我想创建一个指向类似网址的链接,其中一些参数已更改:/mypage?a=1&b=2&c=1,b从1更改为2.我知道如何使用request.args获取当前参数,但结构是不可变的,所以我不知道如何编辑它们。如何使用修改后的查询在Jinja模板中创建新链接?

1 个答案:

答案 0 :(得分:14)

编写一个修改当前网址查询字符串并输出新网址的函数。使用Flask应用程序的template_global装饰器将该函数添加到模板全局变量中,以便可以在Jinja模板中使用它。

from flask import request
from werkzeug.urls import url_encode

@app.template_global()
def modify_query(**new_values):
    args = request.args.copy()

    for key, value in new_values.items():
        args[key] = value

    return '{}?{}'.format(request.path, url_encode(args))
<a href="{{ modify_query(b=2) }}">Link with updated "b"</a>