所以我正在高级学习Django,我已经知道如何包含manage.py所在的BASE_DIR中的模板。但是我想知道如何在 Django 中的特定应用程序中查找模板。
例如,我有一个名为“mysite”的项目和一个名为 polls 的应用程序。
现在,我在 settings.py DIRS= 中添加了模板[os.path.join(BASE_DIR, "templates")].
但是,如何在民意调查应用程序目录中添加特定于民意调查应用程序的模板?
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── polls
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ ├── images
│ │ ├── scripts.js
│ │ └── style.css
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
├── polls
│ └── index.html
└── static
├── images
├── scripts.js
└── style.css
之前,我希望它看起来像这样。
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── polls
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ ├── images
│ │ ├── scripts.js
│ │ └── style.css
│ ├── templates
│ │ ├── polls
│ | │ ├── index.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
├── polls
│ └── index.html
└── static
├── images
├── scripts.js
└── style.css
无需在 Django 中为特定应用程序加载模板执行任何特殊操作。Django 的模板加载系统会自动搜索所有已安装的应用程序中的名为“templates”的目录。
如果希望在应用程序中构建模板,请按照以下步骤操作:
- 在的应用程序目录中创建一个名为“templates”的目录。 例如,如果的应用程序名为“polls”,则目录结构应如下所示:
polls/
├── templates/
│ └── polls/
│ └── index.html
├── views.py
├── models.py
...
- 在应用程序的“templates”目录中创建一个与的应用程序同名的目录。 这似乎是多余的,但它可以防止多个应用程序使用相同名称的模板发生冲突。例如:
polls/
├── templates/
│ └── polls/
│ └── index.html
...
-
将的模板文件放入此目录。 例如,
index.html
将位于polls/templates/polls/
中。 -
在的视图中,使用
render()
快捷方式来渲染模板:
from django.shortcuts import render
def index(request):
context = {
# Your context data here
}
return render(request, 'polls/index.html', context)
Django 的模板加载器将自动在
polls/templates/
目录中搜索名为
index.html
的模板。
settings.py 中的 DIRS 设置
DIRS
设置用于指定 Django 应该查找模板的附加目录,这些目录不在已安装的应用程序中。无需修改
DIRS
来包含应用程序中的
templates
目录。Django 会自动处理它。
使用上述结构,Django 将在的应用程序和项目级别的
templates
目录中查找匹配的模板,从而可以轻松组织和覆盖应用程序提供的模板。