不要誤解我的意思,我不是在將我的HTML放在settings.py文件旁邊,而是在TEMPLATE_DIR
列表中添加項目目錄(它包含settings.py文件),以便我可以調用任何通過命名它的模板'app/template/file.html'
。在Django中使用項目dir作爲模板目錄是不是一個好主意?
我只是想知道爲什麼Django沒有模板名稱空間。它迫使你要麼:
- 創建一個模板目錄與所有應用程序分開,然後爲每個應用程序創建一個目錄,並把你的HTML。
- 在每個應用程序目錄中創建一個模板目錄,並使用應用程序名稱在其中創建另一個目錄,然後將HTML放入其中。
這是不理想的,因爲:
- 迫使你有你的應用程序之外的HTML。非常適合可插拔。
- 通過強制您創建冗餘目錄樹
project_dir/app_name/template/appname
違反了DRY,否則,如果您有幾個名爲'index.html
'的模板,那麼您就被搞砸了。
因此,將項目目錄定義爲模板目錄以調用所有模板文件'app_name/template/file.html'
是不好主意?如果是,爲什麼?你會如何幹淨地做到這一點?
你用`app_directories`模板加載器我假設?這樣做的問題是,除非您將應用程序的模板放在`app_name/templates/app_name`中,否則模板加載器會將該應用程序的模板視爲在根中。因此,例如,要使用`my_app`的`home.html`模板,您必須將其引用爲`home.html`,而不是`app_name/home.html`。 – 2011-02-06 03:25:01
正確。如果沒有`app/temp/app`方案,名稱衝突很容易,除非您努力以不同的方式命名每個應用程序模板,或者您可以確保您的`generic.html`模板存在於您的應用程序中並且將首先加載。但是,如果這就是你滾動的方式,那麼沒有任何傷害這有點像強類型和弱類型的爭論。 – 2011-02-06 05:24:51