【问题标题】:Pyramid get route name by URL (String)Pyramid 通过 URL 获取路由名称(字符串)
【发布时间】:2015-05-19 07:51:38
【问题描述】:

我试图弄清楚是否可以通过 URL(不是请求)URL 而是字符串 URL 在 Pyramid 中获取路由名称。所以假设我有一个请求,路径是/admin/users/manage。我知道您可以匹配路由名称以获取请求的 route_name,但我如何获取 /admin 的路由名称和 /admin/users 的路由名称?

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

可以获取管理员路由的路径,但是否可以反过来工作?

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

基本上有办法获取 admin/ 前缀下所有路由的 route_objects 吗? Introspector 看起来我可以遍历所有路由,但不能查询路径内的所有特定路由。

【问题讨论】:

    标签: python pyramid


    【解决方案1】:

    我不得不深入研究金字塔源代码来获得这个解决方案。

    另外,澄清一下:此解决方案将为您提供正确的 route_name 以提供所提供的 route_url

    如果我有my_route 作为路由名称和/foo/bar 作为url,我将以下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
    

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 1970-01-01
      • 2018-04-04
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2012-12-25
      相关资源
      最近更新 更多