jinja2 filesystemloader загружает все подкаталоги

В настоящее время у меня есть шаблоны в нескольких разных подкаталогах, и я хотел бы загрузить все шаблоны в jinja2. Похоже, что простое указание каталога FileSystemLoader в верхней части дерева ничего не подбирает в подпапках.

Есть ли способ заставить jinja2 загружать все подкаталоги (можно всего на один уровень вниз, но предпочтительнее все дерево)?

До сих пор мне удавалось делать это с помощью загрузчика выбора:

sub_dirs = [os.path.join(template_file_root,dirname) for dirname in os.listdir(template_file_root) 
\ if os.path.isdir(os.path.join(template_file_root, dirname))]

jinja_dirs = [ jinja2.FileSystemLoader(dirname) for dirname in sub_dirs ]

template_env = jinja2.Environment (loader = jinja2.ChoiceLoader(jinja_dirs))

Однако это кажется немного хакерским. Есть предложения получше?

8
задан chrisst 9 March 2012 в 21:35
поделиться