在配置中添加@view_config中的渲染器?

时间:2015-06-12 13:29:19

标签: python-3.x pyramid

如何为@view_config - 装饰的函数或类提供配置的值?

E.g。

@view_config(route_name='example', renderer=some_config['template.name'])
class MyClass(BaseView):
    ...

或者

@view_defaults(route_name='example', renderer=some_config['template.name2'])
class MyClass2(BaseView):
    ...

或者

@view_config(route_name='example', renderer=some_config['template.name3'])
def method3(request):
    ...

我很难知道从哪里开始,因为我正在尝试编辑一个金字塔插件,它将其配置集中在一个includeme函数中,所以它没有有任何明显的我可以包括,并且很难知道@view_config装饰者可以使用什么。

1 个答案:

答案 0 :(得分:2)

您可以使用declarative配置添加视图(使用@view_config正在执行的操作,或者通过调用config.add_view()方法使用imperative configuration

在这种情况下,由于您需要访问Pyramid注册表和设置文件,因此更容易添加视图。

__init__.py你可以做到:

  settings = config.registry.settings
  # You need to call config.add_route("foobar") to map view to URL also

  config.add_view('views.MyClass', route_name="foobar", renderer=settings['template.name3'])

然后在views.py

  class MyClass(BaseView):
       pass    

@view_config()add_view()参数相等。

我很瘦你也可以为同一个视图混合view_configadd_view()个参数,但我不确定是否这样。希望这会有所帮助。