gpt4 book ai didi

python - 在 Flask 中为 url_for 创建动态参数

转载 作者:太空狗 更新时间:2023-10-29 21:42:41 25 4
gpt4 key购买 nike

我有一个 jinja2 模板,我可以将其重复用于不同的 Flask 路由。所有这些路由都有一个必需的参数并且只处理 GET 请求,但有些路由可能有额外的参数。

有没有办法将额外的参数附加到 url_for() 上?


有点像

url_for(my_custom_url, oid=oid, args=extra_args)

将渲染到(取决于路由端点):

# route 'doit/<oid>' with arguments
doit/123?name=bob&age=45

# route 'other/<oid>' without arguments
other/123

我的用例是提供带有预定义查询参数的链接:

<a href=" {{ url_for('doit', oid=oid, args=extra_args }} ">A specific query</a>
<a href=" {{ url_for('other', oid=oid) }} ">A generic query</a>

我想在没有 JavaScript 的情况下运行这个模板,所以如果可能的话,我不想分配点击监听器并使用 AJAX 为每个链接执行 GET 请求。

最佳答案

任何与路由参数不匹配的参数都将被添加为查询字符串。假设 extra_args 是一个字典,只需将其解压即可。

extra_args = {'hello': 'world'}
url_for('doit', oid=oid, **extra_args)
# /doit/123?hello=world
url_for('doit', oid=oid, hello='davidism')
# /doit/123?hello=davidism

然后使用request.args 在 View 中访问它们:

@app.route('/doit/<int:oid>')
def doit(oid)
hello = request.args.get('hello')
...

关于python - 在 Flask 中为 url_for 创建动态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com