我正在尝试使用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列表?
答案 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']