Python 什么';扩展应用程序时的最佳实践&x27;什么样的模板?

Python 什么';扩展应用程序时的最佳实践&x27;什么样的模板?,python,django,templates,Python,Django,Templates,我最近开始学习Django(1.9版),对它有一个问题 假设我有一个名为mysite的Django项目和一个名为myapp的应用程序 我创建了名为base.html的基本模板和另一个名为child.html,它继承了base.html 所以目录结构是这样的: (project root) ├── mysite │   ├── settings.py │   ├── urls.py │   └── ... ├── myapp │   ├── models.py │   ├── views.py │

我最近开始学习Django(1.9版),对它有一个问题

假设我有一个名为
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" %}
-->我认为这会导致应用程序之间的文件名崩溃

2) 将
base.html
放在项目
templates
目录下
-->在这种情况下,我不想在应用程序之间共享
base.html

base.html
此处仅适用于
myapp
,不适用于其他应用程序)

如何

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

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

您必须对每个应用程序执行相同的操作。

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

非常感谢你的回答。但我认为这不是推荐的方式。因为如果在不同的应用程序中有另一个
base.html
,Django无法区分它们。(根据“Template Namespace”广告)动态更改每个应用程序中每个views.py文件开头的模板目录怎么样<代码>从django.conf导入设置。然后做
settings.TEMPLATE\u DIRS=(os.path.join(settings.BASE\u DIR,'path/to/this/app/templates')。替换('\\','/'),)
哦,我没有想到这样的主意。我想,谢谢你,KNBK。最后,我认为这是可以接受的,因为我们还必须在
views.py
中的
template\u name
中硬编码应用程序名称。对吗?
<!-- on top of `child.html` -->
{% extends "base.html" %}
from django.conf import settings
settings.TEMPLATE_DIRS =(os.path.join(settings.BASE_DIR,'myapp/templates').replace('\\','/'),)