2014-03-05 162 views
5

我正在測試燒瓶藍圖。我的應用程序有兩個藍圖:燒瓶:多個藍圖互相干擾

  1. 基地
  2. 意見

基地/ __ init__.py

base = Blueprint('base', __name__, static_folder='static', template_folder='templates') 
#http://server.com/base 

的意見/ __ init__.py

opinions = Blueprint('opinions', __name__, static_folder='static', template_folder='templates') 
#http://server.com/opinions 

__init__.py

app = Flask(__name__) 
from app.base import views 
from app.base import base 
app.register_blueprint(base, url_prefix='/base') 

from app.opinions import views 
from app.opinions import opinions 
#app.register_blueprint(opinions, url_prefix='/opinions') <-- Uncommenting this line causes issues 

如果我註冊只有這些藍圖1,一切都正常運行。但是,如果我註冊兩個藍圖,模板始終從opinions加載。例如,如果我點擊http://server.com/base,index.html會從意見文件夾中選取。 Flask文檔沒有提及有關'template_folder'命名空間衝突的任何信息。

PS - 我想知道處理多個藍圖的替代方式。從兩張不同的藍圖中導入views文件並不是很舒服。有什麼更好的方法來做到這一點?

+0

請在您的模板和生成的html行中包含靜態的示例用法。 –

+0

@PaoloCasciello - 您的評論肯定有幫助。這不是靜態文件,而是被選中的錯誤模板。我已經適當地編輯了這個問題。 – Neo

+0

[flask藍圖模板文件夾]的可能重複(http://stackoverflow.com/questions/7974771/flask-blueprint-template-folder) – Neo

回答

5

藍圖模板目錄是全局註冊的。它們共享一個名稱空間,以便您的應用程序可以根據需要覆蓋藍圖的模板。文件中提到了這一點。

因此,你不應該命名您的意見模板index.html,而是opinions/index.html。乍一看(…/opinions/templates/opinions/…)使路徑變得尷尬,但增加了靈活性,可以在不更改藍圖內容的情況下自定義「預置」模板。

+0

是的,它是一個有意識的設計選擇。 http://stackoverflow.com/a/8198325/1678010 – Neo