2015-09-05 37 views
1

我正在開發一個燒瓶擴展模塊,在tutorial之後。我的擴展的一部分也是模板。默認情況下,我希望使用瓶擴展模板,除非用戶在主瓶應用中覆蓋它們。問題是默認模板路徑指向main_flask_app/templates。如何檢查它?非常感謝。如何從Flask擴展模板加載模板

+0

@davidism是的,這就是我想要的,我希望用戶的應用程序覆蓋擴展的模板。但是,如果在用戶的應用程序中沒有這樣的模板,那麼我希望從擴展中加載模板。但在這種情況下,在當前設置下,我得到'templateNotFound'錯誤,因爲用戶的應用程序正在尋找模板,可能只在用戶的應用程序模板目錄中(root_path指向的地方) – user3024710

+0

@davidism非常感謝您的快速回復。我的擴展的藍圖根本沒有配置。因此,我添加了my_app = Blueprint('my_app',__name__,template_folder ='templates',static_folder ='static')和app.register_blueprint(my_app,url_prefix ='/ _ my_app')以使其工作。 – user3024710

回答

2

您的應用程序的佈局,並分別您的擴展,應該是這樣的:

myapp_project/ 
    myapp/ 
     __init__.py 
     models.py 
     ... 
     static/ 
     templates/ 
      index.html 
      ... 
      myext/ 
       mypage.html # overrides default from ext 

myext_project/ 
    myext/ 
     __init__.py 
     ... 
     templates/ 
      myext/ 
       mypage.html # the default template from ext 
      ... 

公告目錄結構如何是一樣的。將具有相同路徑的模板添加到應用程序會覆蓋擴展程序中該路徑的默認值。

您的擴展程序將通過嚮應用程序註冊藍圖使這些模板可用。藍圖應該設置爲使用模板文件夾。

from flask import Blueprint 

bp = Blueprint('myext', __name__, template_folder='templates') 

class MyExt(object): 
    ... 
    def init_app(self, app): 
     ... 
     app.register_blueprint(bp) 
    ...