我正在创建一个新包,非常简单。我很困惑,我应该如何做模板?
你看我永远不知道这个应用程序安装在哪个项目上pip install django-something
,但我希望“某事应用程序”能够固有其使用的项目模板。
这是我的工作,其他人怎么做?
将模板放在项目中配置的加载器在开始查找应用程序目录之前可以找到的位置。
例如
如果你有:
TEMPLATE_LOADERS = ('django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader')
TEMPLATE_DIRS = 'myproject/templates'
并且应用程序会查找foo/bar.html
,那么您只需要创建myproject/templates/foo/bar.html
即可覆盖内置模板。
诀窍是“命名空间”您自己的应用程序模板。
不要将应用程序的模板存储在 中yourapp/templates/foo.html
,而是在模板目录中添加另一个目录:yourapp/templates/yourapp/foo.html
.
这意味着您可以区分您的应用程序 base.html
和项目的 base.html
.
在您应用的模板(例如,“foo.html”)中,您继承了应用的基本模板:
{% extends "yourapp/base.html" %}`.
然后,您可以从项目的 base.html(如果存在)继承,方法是:
{% extends "base.html" %}