2012-06-25 33 views
7

我學會了如何創建Flask Blueprints,並且可以爲使用Jinja2模板的非燒瓶產品創建藍圖並在燒瓶項目中使用它們。我做這樣的事情:如何從Flask藍圖的多個template_folder加載?

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

現在我想添加另一套模板,這在邏輯上與我的非瓶項目有關,但瓶,只有特定的。我完全不確定它是否是好設計,但是有沒有什麼辦法可以從一個藍圖中傳播兩個模板文件夾?並讓兩個模板都可用於整個Flask項目?

注:formgear是我的非Flask項目的名稱。

+1

難道我的回答回答你的問題? – pyfunc

回答

5

這裏是調查的蹤跡。

從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) 
    .... 

從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)) 

調查結果:被傳遞給Blueprints

  1. template_folder是隨後類_PackageBoundObject
  2. 這被視爲一個字符串而不是文件夾
  3. 列表

結果:

  1. 您無法通過多條路徑爲template_folder