1

ピラミッドはbeforeRendererを提供します

    from repoze.events import subscriber
    from pyramid.events import BeforeRender

    @subscriber(BeforeRender)
    def add_global(event):
        print event['renderer_name']      #this is the renderer name
        print event['renderer_info'].name #same with event['renderer_name']

しかし、役に立たない。event['renderer_name']とevent['renderer_info']。nameを変更または削除すると、configでレンダラー(テンプレートファイル)も見つかります。

    config.add_view('mywork.views.index.index',
                     route_name='/index',
                     renderer='mywork:templates/index.pt')

view.pyまたはroot_factoryでレンダラーの名前を使用してレンダラーの値を変更し、すべてのテンプレートを変更できるようにします。

4

1 に答える 1

1

BeforeRenderは、レンダリングの前に呼び出されます。言い換えれば、それview.pyはあなたがあなたの見解を置いたと私が思うところの後に呼ばれます。root_factoryそのずっと前にも呼ばれています。root_factoryトラバーサルのルートノードを作成するために使用されます。これがコンテキストを返すものです。コンテキストがないと、ビューは呼び出されず、ピラミッドはコンテキストが見つからないというエラーを発生させます。

BeforeRenderは、ビューがいくつかのパラメーターを返した後、または場合によってrenderToResponseはレンダラー応答を返す呼び出しの前に呼び出されます。ビュー内からレンダラーを渡すことができます。

http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/templates.html#using-templates-directly

また、ビューを設定するときにレンダラーパラメーターを削除する必要があります。

于 2012-07-08T08:54:58.447 に答える