我正在开发一个django软件包,允许通过将应用程序放在django.contrib.admin
行之前的INSTALLED_APPS中来覆盖管理主题。
我希望此应用程序具有多个主题,以便您可以通过在 settings.py 文件中设置变量来选择要使用的主题。所以,我的主题有这个结构:
myapp
|--templates
|-- default
|-- theme1
|-- theme2
如果我将该变量设置为 theme1 ,则应该从目录templates/theme1
加载模板。
现在,我已经在我的应用程序的__init__.py
文件中写了这个:
from django.conf import settings
import os
BASE_DIR = os.path.dirname(__file__)
default_path = os.path.join(BASE_DIR, 'templates/default')
if hasattr(settings, 'ZONEADMIN_THEME'):
path = os.path.join(BASE_DIR, 'templates/', settings.ZONEADMIN_THEME)
settings.TEMPLATE_DIRS += ((path,) if os.path.isdir(path) else (default_path,))
else:
settings.TEMPLATE_DIRS += (default_path,)
它有效,但我相信还有更好的方法。这段代码是app.ready
函数中写入内容的一个示例吗?我应该在哪里覆盖TEMPLATE_DIRS变量?