Python 什么';扩展应用程序时的最佳实践&x27;什么样的模板?
我最近开始学习Django(1.9版),对它有一个问题 假设我有一个名为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 │
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('\\','/'),)