创建包时Django模板导入

时间:2013-08-23 13:16:04

标签: python django

我正在创建一个新包,非常简单。我很困惑,我该怎么做模板?

你知道我永远不知道这个应用程序安装在pip install django-something上的项目是什么,但是我希望'app app'固有其所使用的项目模板。

这是我的工作,其他人如何做到这一点?

2 个答案:

答案 0 :(得分:1)

将模板放在项目中配置的加载器在开始查看应用程序目录之前找到的位置。

E.G。

如果你有:

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即可覆盖内置模板。

答案 1 :(得分:1)

诀窍是“命名”你自己的应用程序的模板 不要将应用的模板存储在yourapp/templates/foo.html中,而是在模板目录中添加另一个目录:yourapp/templates/yourapp/foo.html

这意味着您可以区分应用 base.html项目的 base.html

在您应用的模板中(例如,'foo.html'),您继承了应用的基本模板:

{% extends "yourapp/base.html" %}`. 

然后您可以从项目的base.html(如果存在)继承,通过以下方式继承:

{% extends "base.html" %}