0
我希望能夠擁有模板所在的動態目錄。讓我解釋我的意思。我有一個應用程序system
至極有這樣一個文件結構:動態TEMPLATE_DIRS
\proj
__init__.py
settings.py
urls.py
...
\system
__init__.py
models.py
views.py
urls.py
\modules
\module_1
__init__.py
models.py
views.py
urls.py
\templates ## Attention
one.html
two.html
\module_2
__init__.py
modules.py
\templates ##
three.html
four.html
...
\module_N
...
正如你可以看到有一個modules
文件夾,其中包含「原子」模塊,在某種意義上,他們擁有所有必要的文件,包括模板原子一個地方。因此,module_1
有一個模板文件夾及其tempaltes,module_2
有一個模板文件夾,所有其他模塊都有自己的模板文件夾。我想要的是能夠參考我的settings.py
文件中的這些模板文件夾,以便當我將一個全新模塊上傳到模塊文件夾時,我不必更改此settings.py
文件。所以我的問題是,我怎麼能動態地構建TEMPLATE_DIRS
變量:
TEMPLATE_DIRS = (
## how to implement this???
)
編輯
我考慮的另一種方法。首先,我的模塊轉換爲DINAMIC應用,如this:
MODULES_DIR = 'system/modules'
for item in os.listdir(MODULES_DIR):
if os.path.isdir(os.path.join(MODULES_DIR, item)):
app_name = 'system.modules.%s' % item
INSTALLED_APPS += (app_name,)
然後做一些事情,使Django的尋找在所有的應用程序文件夾中的模板。但我不確定它是否會起作用,我該如何完成這項任務。
而我的建立INSTALLED_APPS的方法是否會動態工作? – Jacobian
我懷疑這將取決於代碼何時運行;您可能會遇到啓動順序的困難。我必須說,雖然我不明白你爲什麼這樣做,如果您要將代碼添加到項目中,則將該代碼的應用程序名稱添加到INSTALLED_APPS是很簡單的。 –
我不確定我是否理解文檔。如果我弄錯了,請你糾正我嗎?據我所知,我應該將所有模塊列在INSTALLED_APPS(靜態或動態,如果可能的話)。然後只需APP_DIRS = True。所有這些都應該在settings.py文件中完成。 – Jacobian