2014-11-10 3 views
0

Я стараюсь включать в себя путь шаблона из ARGV:tornadoweb включает путь от арг

site_argv = { 
    'template' : 'site_list.html' 
} 
return self.base.render('site.html', **site_argv) 

и site.html включают в себя от переменного шаблона:

{% include template %} 

но файл ошибок шаблона не кладезь, без включают в себя путь от переменной величины

FileNotFoundError: [Errno 2] No such file or directory: '/.../template/template' 

Я стараюсь

{% module Template(template, **kwargs) %} 

но kwargs переменный не найдено

Я хочу, чтобы включить шаблон детей с использованием всех арг шаблона родителя, когда я не известные аргами из родительского шаблона.

ответ

0

Система шаблонов торнадо основана на генерации кода и требует, чтобы все директивы include и extend использовали константы, поэтому код может быть сгенерирован один раз.

В целом, шаблоны Tornado имеют семантику, подобную регулярному питонному коду. Директива module Template похожа на вызов другого файла шаблона как функции, и, как и обычные функции python, нет (чистого) способа для функции увидеть переменные, определенные в вызываемой функции.

Вместо этого вы должны передавать аргументы как единый объект. Звоните render с помощью self.base.render('site.html', argv=site_argv) и тогда вы можете использовать {% module Template(template, **argv) %}

Смежные вопросы