gpt4 book ai didi

python - Pyramid :为由 route_url 构造的每个 URL 扩展查询字符串

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:37 24 4
gpt4 key购买 nike

我正在使用 Webframework Pyramid 和 URL Dispatch,我在其中定义了很多路由,例如

config.add_route('login', '/login')
config.add_route('logout', '/logout')

现在我想在查询字符串中附加一些内容,例如由

构造的 URL
request.route_url('login')

实际上是

/login?foo=bar

这应该在项目基础上完成,以避免编写

request.route_url('login', _query={'foo': 'bar'})

每次我想构建一个 URL。

做这个的正确位置是什么?我应该以某种方式继承 pyramid.request 类并覆盖 route_url 方法吗?有我可以使用的事件或 Hook 吗?

最佳答案

您可以定义预生成器并将其分配给您的路线。

def add_query_pregen(request, elements, kwargs):
query = kwargs.setdefault('_query', {})
query.setdefault('foo', 'bar')
return elements, kwargs

def add_route_with_query(*args, **kwargs):
kwargs['pregenerator'] = add_query_pregen
config.add_route(*args, **kwargs)

add_route_with_query('login', '/login')
add_route_with_query('logout', '/logout')

基本上,只要您调用 request.route_url 等,pregenerator 就会被调用,并传递元素和 kwargs,允许您在实际生成 url 之前改变它们。

关于python - Pyramid :为由 route_url 构造的每个 URL 扩展查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029173/

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