修改当前GET请求中的查询参数以获取新的url

问题描述 投票:0回答:2

我访问路径为

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

python url flask jinja2
2个回答
20
投票

编写一个函数,修改当前 url 的查询字符串并输出新的 url。使用 Flask 应用程序的

template_global
装饰器将函数添加到模板全局变量,以便它可以在 Jinja 模板中使用。

from flask import request
from urllib.parse import urlencode

@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, urlencode(args))
<a href="{{ modify_query(b=2) }}">Link with updated "b"</a>

1
投票

直接在金贾:

{% set args = request.args.copy() %}
{% set _ = args.setlist("b", [2]) %}
{{ url_for(request.endpoint, **args) }}
© www.soinside.com 2019 - 2024. All rights reserved.