2013-11-06 3 views
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 

Как вынести шаблон самого произвольном с двигателем Мако Пирамид и вернуть его в ответ?

+1

Как об использовании [ 'render_to_response()'] (http://docs.pylonsproject.org /projects/pyramid/en/1.5-branch/api/renderers.html#pyramid.renderers.render_to_response)? –

+0

@PiotrDobrogost, пожалуйста, ответьте – aitchnyu

ответ

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)