金字塔通过URL获取路由名称(字符串)

2024-04-19 15:42:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图弄清楚是否可以通过URL(不是请求)URL而是字符串URL来获得金字塔中的路由名。假设我有一个请求,路径是/admin/users/manage。你能知道路由的名字吗?在

introspector.get('routes', 'admin') 

工作以获取管理路由的路由路径,但是否可以以其他方式工作?在

^{pr2}$

基本上有没有一种方法可以得到所有路由的admin/前缀下的route_对象?内省看起来好像我可以遍历所有路径,但不能查询路径内的所有特定路径。在


Tags: 方法字符串路径url路由getmanageadmin
1条回答
网友
1楼 · 发布于 2024-04-19 15:42:13

我不得不挖掘金字塔源代码来得到这个解决方案。在

另外,为了澄清一下:这个解决方案将为您提供正确的route_name,它对应于所提供的route_url。在

如果我有my_route作为路由名,/foo/bar作为url,那么我将下面的my_url变量设置为“/foo/bar”,它返回“myroute”

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

相关问题 更多 >