Средства визуализации Pyramid довольно просты, и, в конце концов, это «просто python» То есть вы вызываете функции из функций, ничего особенного.
Способ автоматического рендеринга Pyramid работает так:
- Запрос приходит, отправляется на просмотр.
- Если это конкретное представление представление НЕ возвращает объект Response, то Pyramid пытается передать значение, которое вы вернули из представления, во вложенный рендер.
view_config
относится только к представлению текущего запроса. Другие функции, которые вы вызываете, это просто функции в Python.
Если вы все еще хотите делегировать работу другому представлению, есть несколько вариантов, но один из них, который мы сообщаем людям, заключается в том, что вам нужно будет явно вызвать pyramid.renderers.render
в пределах подвида или render_to_response
. Конечно, если вы вызываете только render
, вы должны превратить это HTML-тело в полный Response
объект.
def fork(request):
return myfunc1(request)
def myfunc1(request):
return render_to_response('templates/derived/template2', {'msg': 'msg1'}, request)
Обратите внимание, как myfunc1
возвращает объект Response
, поэтому fork
(представление, которое активно для этого запроса) может просто вернуть его.
В противном случае вам нужно превратить результат в ответ:
def fork(request):
resp = request.response
resp.body = myfunc1(request)
return resp
def myfunc1(request):
return render('templates/derived/template2', {'msg': 'msg1'}, request)
Очевидно, что у каждого подхода есть свои преимущества и недостатки.