金字塔:在render_view()中传递上下文,但原始的request.context仍然存在

时间:2015-04-18 18:07:39

标签: pyramid

我稍微试图滥用render_view()来动态查找要在我的主视图中呈现的viewlet。然而,该框架是健全的,我的滥用尝试完全失败了。问题具体是:当我调用render_view()并手动传入上下文时,我不知道如何在目标视图中查找此上下文。

  • 我渲染视图admin()
  • 在此视图中,我通过render_view()
  • 为每个I pass管理面板呈现管理面板视图context
  • 但是在render_view()中,admin()的原始上下文仍然存在,我不知道如何阅读传入的context

是否有可能在上下文中传递?或者是否有更好的替代方法来渲染金字塔中的子视图(视图?),而不是滥用render_view()

@view_config(route_name='admin', renderer='admin/admin.html', permission='view')
def admin(request):
    # Herer request.context = Admin
    p = AdminPanel()
    rendered_panel = render_view(context=p, name="admin_panel", secure=True, request=request) 
    return dict(panels=rendered_panel)


@view_config(context=AdminPanel, name="admin_panel", renderer='string', permission='view')
def panel(request):
    # XXXXXXXXXXXXX
    # This is the original request.context Admin, not one I passed in render_view() above
    # XXXXXXXXXXXXX
    context = request.context
    ....

1 个答案:

答案 0 :(得分:0)

显然你可以将上下文作为view函数的第一个参数。不知怎的,我错过了这个,因为没有太多这样的例子:

   @view_config(context=AdminPanel, name="admin_panel", renderer='string', permission='view')
   def panel(context, request):