我最近开始学习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
- >我认为它会导致文件名的应用程序之间崩溃。
2)项目templates
目录下放置base.html
- >在这种情况下,我不希望在应用程序之间共享base.html
。
(base.html
这里只对myapp
,没有其他应用程序)
谢谢@knbk。最后,我认为这是可以接受的,因为我们还必须在'views.py'中的'template_name'中对应用程序名称进行硬编码。对? –