Django默认会在配置文件setting.py的TEMPLATE_LOADERS中开启'django.template.loaders.filesystem.Loader',开启该选项后可以按照TEMPLATE_DIRS中列出的路径的先后顺序从中查找并载入模板。
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
)
TEMPLATE_DIRS = (
'/var/www/site/mycitsm/mycitsm/templates',
'/var/www/site/mycitsm/sqlreview/templates',
)
现在TEMPLATE_DIRS中指定的两个目录中均存在base.html,渲染模板的语句为 return render(request, 'base.html',context),那么Django会优先使用第一个目录中的base.html模板。当第一个目录中不存在base.html时,Django才会使用第二个目录中的base.html模板。当然,当两个目录都不存在base.html时,会提示找不到模板。因此为了避免混淆,在使用'django.template.loaders.filesystem.Loader'时尽量不要在TEMPLATE_DIRS指定的不同的位置放置同名模板。
如果确实想在不同的位置放置同名模板呢?比如,为了达到程序复用的目的,我们往往会创建一些某个Django APP特定的static文件和template文件,保存在该APP特定的目录中。而我们不能保证这些文件与其他位置的文件不发生重名。因此这里引入了
比如有如下配置:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
)
TEMPLATE_DIRS = (
'/var/www/site/mycitsm/mycitsm/templates',
'/var/www/site/mycitsm/sqlreview/templates',
)
现在TEMPLATE_DIRS中指定的两个目录中均存在base.html,渲染模板的语句为 return render(request, 'base.html',context),那么Django会优先使用第一个目录中的base.html模板。当第一个目录中不存在base.html时,Django才会使用第二个目录中的base.html模板。当然,当两个目录都不存在base.html时,会提示找不到模板。因此为了避免混淆,在使用'django.template.loaders.filesystem.Loader'时尽量不要在TEMPLATE_DIRS指定的不同的位置放置同名模板。
如果确实想在不同的位置放置同名模板呢?比如,为了达到程序复用的目的,我们往往会创建一些某个Django APP特定的static文件和template文件,保存在该APP特定的目录中。而我们不能保证这些文件与其他位置的文件不发生重名。因此这里引入了