【问题标题】:How to do fine control of view rendering in Pyramid如何在 Pyramid 中对视图渲染进行精细控制
【发布时间】:2013-11-06 19:41:18
【问题描述】:

传统的方式似乎很好:

@view_config(route_name='new', renderer='new.mako')
    return {'tasks': tasks}

但有时我可能需要很好地控制我正在渲染的内容,即我可能会根据条件渲染不同的视图。看到这个伪代码:

@view_config(route_name='new')
def new_view(request):
    if request.att == something:
        one_dict = ...
        a = render( "new.mako", one_dict)
    else:
        another_dict = ...
        a = render( "new_special.mako", one_dict)
    return a

如何使用 Pyramid 的 Mako 引擎自己渲染任意模板并将其作为响应返回?

【问题讨论】:

标签: pyramid mako


【解决方案1】:

您可以在此处使用render_to_response() renderer

使用渲染器renderer_name(模板或静态渲染器),使用渲染器__call__ 方法的结果(通常是字符串或Unicode)作为响应主体来渲染值(或值集)。

对于您的代码:

@view_config(route_name='new')
def new_view(request):
    if request.att == something:
        one_dict = ...
        a = render_to_response("new.mako", one_dict)
    else:
        another_dict = ...
        a = render_to_response("new_special.mako", one_dict)
    return a

或许:

@view_config(route_name='new')
def new_view(request):
    if request.att == something:
        renderer = "new.mako"
    else:
        renderer = "new_special.mako"
    return render_to_response(renderer, values)

【讨论】:

    猜你喜欢
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2012-07-30
    • 2017-04-14
    相关资源
    最近更新 更多