有没有一种很好的方法可以通过Pyramid框架的内省来调用视图

时间:2014-07-21 18:30:20

标签: pyramid

我正在尝试使用Pyramid内省接口从可调用的视图中获取给定资源类型的所有视图的列表。我可以使用以下内容为添加的视图配置获取一组内省:

@view_config(...)
def view_callable(context, request):
  introspector = request.registry.introspector
  for view_int in introspector.get_category('views'):
    view_int = view_int['introspectable']

虽然我没有找到关于鉴别器格式的任何官方文档,但从这里看来,view_int.discriminator [1]是来自遍历的上下文类型,view_int.discriminator [2]是视图name,view_int.discriminator [3]是路由名称等。

但是,如何为此视图获取视图可调用函数本身? IIntrospectable似乎没有提供一种方法来获得这个?

是否有更好的方法在运行时根据route_name,上下文类型等获取所有已注册视图的callables列表?

1 个答案:

答案 0 :(得分:1)

通过查看源代码,我发现了以下简单的解决方案。虽然,我不确定这是否稳定,因为我没有在官方文档中找到它。

for view in request.registry.introspector.get_category('views'):
    context = view['introspectable']['context']
    view_callable_class = view['introspectable']['callable']
    view_callable_method_name = view['introspectable']['attr']