0

传统的方式似乎很好:

@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 引擎自己渲染任意模板并将其作为响应返回?

4

1 回答 1

1

您可以在此处使用render_to_response()渲染器

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

对于您的代码:

@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)
于 2013-11-08T12:03:06.840 回答