2012-06-25 6 views
7

Nauczyłem się tworzyć Plany Flask i mogę tworzyć projekty dla produktów bez butli, które używają szablonów Jinja2 i używać ich w projektach kolb. I zrobić coś takiego:Jak załadować z więcej niż jednego foldera szablonów do planu Flask?

# blueprint code 
from flask import Blueprint 
from pkg_resources import resource_filename 
app = Blueprint('formgear', __name__, 
       template_folder=resource_filename('formgear', 'templates')) 

A teraz chcę dodać inny zestaw szablonów, który jest logicznie połączony z moim projektem non-Kolby Kolba ale są tylko specyficzne. Nie jestem do końca pewien, czy to dobry projekt, ale czy istnieje sposób na propagowanie obu folderów szablonów z jednego projektu? Czy oba zestawy szablonów są dostępne dla całego projektu Flask?

Uwaga: formgear to nazwa mojego projektu poza Flaską.

+1

Czy moja odpowiedź odpowiedź na swoje pytanie ? – pyfunc

Odpowiedz

5

Oto ścieżka śledztwa.

Od flask.blueprints

class Blueprint(_PackageBoundObject): 
    .... 
    def __init__(self, name, import_name, static_folder=None, 
       static_url_path=None, template_folder=None, 
       ...) 
     _PackageBoundObject.__init__(self, import_name, template_folder) 
    .... 

Od flask.helpers

@locked_cached_property 
def jinja_loader(self): 
    """The Jinja loader for this package bound object. 

    .. versionadded:: 0.5 
    """ 
    if self.template_folder is not None: 
     return FileSystemLoader(os.path.join(self.root_path, 
              self.template_folder)) 

Badanie Wynik:

  1. template_folder który jest przekazywany do Blueprints jest następnie do klasy _PackageBoundObject
  2. To jest traktowane jako jeden ciąg znaków, a nie jako listy folderów

Wynik:

  1. Nie można przekazać wiele ścieżek dla template_folder
Powiązane problemy