金字塔:在 render_view() 中传入上下文,但原始 request.context 仍然存在
Pyramid: passing in context in render_view(), but original request.context remains
我有点想滥用 render_view()
来动态查找要在我的主视图中呈现的视图。然而,这个框架是健壮的,我的滥用尝试完全失败了。问题具体是:当我调用 render_view() 并手动传入上下文时,我不知道如何在目标视图中查找此上下文。
- 我渲染视图 admin()
- 在这个视图中,我呈现管理面板视图,对于每个我通过 render_view()
作为 context
传递的管理面板
- 但是在render_view()中,admin()的原始上下文仍然存在,我不知道如何读取传入的
context
是否可以在某处获取上下文中传递的信息?或者是否有更好的替代方法来在 Pyramid 中呈现子视图(viewlets?),而不是滥用 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
....
显然你可以将上下文作为视图函数的第一个参数。不知何故我错过了这个,因为没有太多这样的例子:
@view_config(context=AdminPanel, name="admin_panel", renderer='string', permission='view')
def panel(context, request):
我有点想滥用 render_view()
来动态查找要在我的主视图中呈现的视图。然而,这个框架是健壮的,我的滥用尝试完全失败了。问题具体是:当我调用 render_view() 并手动传入上下文时,我不知道如何在目标视图中查找此上下文。
- 我渲染视图 admin()
- 在这个视图中,我呈现管理面板视图,对于每个我通过 render_view() 作为
- 但是在render_view()中,admin()的原始上下文仍然存在,我不知道如何读取传入的
context
context
传递的管理面板
是否可以在某处获取上下文中传递的信息?或者是否有更好的替代方法来在 Pyramid 中呈现子视图(viewlets?),而不是滥用 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
....
显然你可以将上下文作为视图函数的第一个参数。不知何故我错过了这个,因为没有太多这样的例子:
@view_config(context=AdminPanel, name="admin_panel", renderer='string', permission='view')
def panel(context, request):