【发布时间】:2013-02-22 16:50:17
【问题描述】:
我正在使用 Webframework Pyramid 和 URL Dispatch,我在其中定义了很多类似的路由
config.add_route('login', '/login')
config.add_route('logout', '/logout')
现在我想在查询字符串中添加一些内容,例如由
构建的 URLrequest.route_url('login')
其实
/login?foo=bar
这应该基于项目来完成,以避免编写
request.route_url('login', _query={'foo': 'bar'})
每次我想构建一个 URL。
执行此操作的正确位置是什么?我应该以某种方式从 pyramid.request 类继承并覆盖 route_url 方法吗?有我可以使用的事件或钩子吗?
【问题讨论】:
-
request.route_url('login', _query={'foo': 'bar'})有什么问题?根据您的描述,我无法提出问题所在。你想在拨打request.route_url('login')时得到/login?foo=bar吗? -
不,我想在 every 调用 route_url 中获取 /login?foo=bar,而不在每次调用 route_url 时插入 kwarg _query。当然,这只是出于源代码美学的原因。
-
就像我说的。拨打
request.route_url('login')时,您想获得/login?foo=bar。还是您的意思是在没有任何参数的情况下调用request.route_url()时要获取/login?foo=bar?在这两种情况下,我都会从pyramid.request.Request继承,覆盖route_url()方法并在启动时调用config.set_request_factory。 -
request.route_url('login')应该产生/login?foo=bar等等(对于每条路线)。我将按照您的建议进行操作,并从Request继承,并在完成后将此解决方案作为答案发布。
标签: python web-applications url-routing pyramid