Насколько я могу судить, mako не предоставляет никакой информации о родительском шаблоне для включения.Более того, необходимо позаботиться об удалении любых битов информации об этом из контекста, передаваемого во включаемый файл.
Поэтому единственное решение, которое я вижу, это использовать стек CPython, найти ближайший фрейм шаблона mako и извлечь из него необходимую информацию,Однако это может быть как медленно, так и ненадежно, и я бы посоветовал перейти к явной передаче имени.Он также опирается на недокументированные функции мако, которые могут измениться позже.
Вот решение на основе стека:
В шаблоне:
${h.get_previous_template_name()} # h is pylons-style helpers module. Substitute it with cherrypy appropriate way.
В файле helpers.py (или w / e подходит для cherrypy):
import inspect
def get_previous_template_name():
stack = inspect.stack()
for frame_tuple in stack[2:]:
frame = frame_tuple[0]
if '_template_uri' in frame.f_globals:
return frame.f_globals['_template_uri']
Это вернет полный URI, однако, как 't1.html'.Настройте его под свои нужды.