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

stp*_*tpk 10 python url jinja2 flask

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

dav*_*ism 14

编写一个修改当前url查询字符串并输出新url的函数.使用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))
Run Code Online (Sandbox Code Playgroud)
<a href="{{ modify_query(b=2) }}">Link with updated "b"</a>
Run Code Online (Sandbox Code Playgroud)