我试图弄清楚是否可以通过URL(而不是请求)URL在字符串中获取路由名称,而不是字符串URL。所以假设我有一个请求,路径是/ admin / users / manage。我知道您可以匹配路由名称以获取请求的route_name但是如何获取/ admin的路由名称和/ admin / users的路由名称?
introspector.get('routes', 'admin')
用于获取管理路由的路径路径,但是可以反过来工作吗?
introspector.get('routes', 'admin/users')
基本上有办法在admin /前缀下获取所有路由的route_objects吗? Introspector看起来像我可以遍历所有路线但不查询路径内的所有特定路线。
答案 0 :(得分:1)
我不得不深入研究金字塔源代码以获得此解决方案。
此外,只是为了澄清:此解决方案将为您提供的route_name
提供正确的route_url
。
如果我有my_route
作为路由名称而/foo/bar
作为网址,我将以下my_url
变量设置为" / foo / bar"然后它返回" my_route"
from pyramid.interfaces import IRoutesMapper
@view_config(...)
def call_route_by_url(request):
routes = request.registry.queryUtility(IRoutesMapper).get_routes()
my_url = '/your/url/here'
for r in routes:
if r.path == my_url:
# do something with r.name <-- that is your route_name
pass