Django 中特定于应用程序的模板目录的标准?
Standard for application-specific template directories in Django?
我想这是一个与 Django 开发最佳实践相关的问题。
我正在尝试使用包含多个应用程序的主页 (base.html
) 构建 Web 服务。我想让应用程序独立,所以我在每个应用程序中创建了一个 templates
目录,并且还想利用 Django 的模板继承功能使整个过程尽可能流畅.
现在我关心的是,我应该把base.html
放在我项目的什么地方,以便系统知道在哪里可以找到它?
另外,为了使系统能够连接模板,我应该在 settings.py
文件中进行哪些更改?是否有一种标准或已知的方法可以对这种安排花费最少的精力?
我见过并使用过的一种常见设计模式是将集中式 "app" 作为项目的一部分,其中包含您希望在其他应用程序中使用的所有共享 "stuff"。所以你可能有以下目录结构:
base/
static/
css/
common.css
js/
common.js
templates/
base.html
myapp1/
urls.py
views.py
templates/
...
myapp2/
urls.py
views.py
templates/
...
myproject/
settings.py
urls.py
现在您只需像其他任何应用程序一样包含 "base" 应用程序,然后将共享内容放入其中。其他应用程序可以引用存在于其中的模板,并且可以包含您可能想要共享的任何公共库。
在settings.py中:
INSTALLED_APPS = ['base', 'myapp1', 'myapp2']
不需要中央应用程序。 TEMPLATES 设置还包括一个 DIRS 选项,它是将始终被搜索的目录列表。因此,您可以将其设置为适当的目录 - 例如 os.path.join(BASE_DIR, 'templates')
并将非应用程序特定的模板(例如 base.html 放在那里。
您可以将templates
文件夹放在项目文件夹中(即文件夹包含settings.py
)。
正如@danialroseman 所说,您只需要更新settings.py
中的TEMPLATES
变量中的DIRS
。让项目文件夹为myproject
(即文件夹包含settings.py
)::
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
### ADD YOUR DIRECTORY HERE LIKE SO:
'DIRS': [ os.path.join(BASE_DIR,'myproject', 'templates')],
...
您不需要创建单独的应用程序。
我想这是一个与 Django 开发最佳实践相关的问题。
我正在尝试使用包含多个应用程序的主页 (base.html
) 构建 Web 服务。我想让应用程序独立,所以我在每个应用程序中创建了一个 templates
目录,并且还想利用 Django 的模板继承功能使整个过程尽可能流畅.
现在我关心的是,我应该把base.html
放在我项目的什么地方,以便系统知道在哪里可以找到它?
另外,为了使系统能够连接模板,我应该在 settings.py
文件中进行哪些更改?是否有一种标准或已知的方法可以对这种安排花费最少的精力?
我见过并使用过的一种常见设计模式是将集中式 "app" 作为项目的一部分,其中包含您希望在其他应用程序中使用的所有共享 "stuff"。所以你可能有以下目录结构:
base/
static/
css/
common.css
js/
common.js
templates/
base.html
myapp1/
urls.py
views.py
templates/
...
myapp2/
urls.py
views.py
templates/
...
myproject/
settings.py
urls.py
现在您只需像其他任何应用程序一样包含 "base" 应用程序,然后将共享内容放入其中。其他应用程序可以引用存在于其中的模板,并且可以包含您可能想要共享的任何公共库。
在settings.py中:
INSTALLED_APPS = ['base', 'myapp1', 'myapp2']
不需要中央应用程序。 TEMPLATES 设置还包括一个 DIRS 选项,它是将始终被搜索的目录列表。因此,您可以将其设置为适当的目录 - 例如 os.path.join(BASE_DIR, 'templates')
并将非应用程序特定的模板(例如 base.html 放在那里。
您可以将templates
文件夹放在项目文件夹中(即文件夹包含settings.py
)。
正如@danialroseman 所说,您只需要更新settings.py
中的TEMPLATES
变量中的DIRS
。让项目文件夹为myproject
(即文件夹包含settings.py
)::
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
### ADD YOUR DIRECTORY HERE LIKE SO:
'DIRS': [ os.path.join(BASE_DIR,'myproject', 'templates')],
...
您不需要创建单独的应用程序。