扩展应用程序模板时的最佳做法是什么?

时间:2016-01-17 06:16:36

标签: python django templates

我最近开始学习Django(版本1.9),并对templates inheritance提出疑问。

假设我有一个名为mysite的Django项目和一个名为myapp的应用程序 我创建了名为base.html的基本模板和另一个名为child.html的基础模板,它继承了base.html

所以目录结构是这样的:

(project root)
├── mysite
│   ├── settings.py
│   ├── urls.py
│   └── ...
├── myapp
│   ├── models.py
│   ├── views.py
│   ├── ...
│   └── templates
│       └── myapp
│          ├── base.html
│          └── child.html
└── manage.py

在这种情况下,我可以像这样继承base.html

<!-- on top of `child.html` -->
{% extends "myapp/base.html" %}

我想知道的是,我正在对应用程序名称进行硬编码 有没有其他的写作方法可以避免硬编码应用程序名称? 或者,它没关系,我不需要担心?

我提出了一些解决方法。

1)将base.html直接放在templates目录

├── myapp
│   ├── models.py
│   ├── views.py
│   ├── ...
│   └── templates
│       ├── base.html  # Here!
│       └── myapp
│          └── child.html

- &GT;我认为这会导致文件名在应用程序之间崩溃。

2)将base.html放在项目templates目录下 - &gt;在这种情况下,我不想在应用程序之间共享base.htmlbase.html此处仅适用于myapp,而不适用于其他应用程序)

2 个答案:

答案 0 :(得分:0)

怎么样

method A

然后使用

|── myapp
│   ├── models.py
│   ├── views.py
│   ├── ...
│   └── templates
│       ├── base.html  # Here!
│       └── child.html
│          

然后在每个views.py文件的开头动态更改Template目录。

<!-- on top of `child.html` -->
{% extends "base.html" %}

您必须为每个应用做同样的事情。

答案 1 :(得分:0)

您的基本模板和子模板都是特定于您的应用的,因此两者都应位于同一个myapp/子目录中。在myapp/base.html上对依赖项进行硬编码是完全可以接受的。