Оптимальный макет для шаблонов чертежей Flask?

В Flask, кажется, есть два способа определения шаблонов:

  1. Уровень приложения:

    app/
        templates/
            index.html
            user/
                index.html
    
  2. И уровень Blueprint:

    app/
        user/
            templates/
                index.html
        templates/
            index.html
    

Оба вроде работают, но один лучше другого? Если нет, каковы преимущества/недостатки каждого подхода?

По Blueprints не так много документации, поэтому любая помощь будет принята с благодарностью.


person Blender    schedule 28.12.2012    source источник


Ответы (1)


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

Также вы можете полностью перезаписать загрузчик шаблонов jinja2 для своего приложения и иметь шаблоны в нужных вам каталогах :) Таким образом, вы можете переместить все шаблоны в нужные вам каталоги, если вам не нравится то, как оно сейчас. Что-то вроде этого:

import jinja2

my_loader = jinja2.ChoiceLoader([
    app.jinja_loader,
    jinja2.FileSystemLoader(['templates/somwehere',
                             'templates/another_place',
                             'apps/templates']),
])
app.jinja_loader = my_loader

Имейте в виду, что здесь важен порядок.

person Ignas Butėnas    schedule 29.12.2012
comment
Небольшое замечание: обратная косая черта для продолжения строки не требуется внутри литерала списка в Python. - person Audrius Kažukauskas; 29.12.2012
comment
Спасибо, я думаю, что буду использовать что-то подобное в своем приложении. - person Blender; 29.12.2012