使用Django中的模板创建视图,当return一个html文件的时候,出现了TemplateDoesNotExist的错误
对于这个错误,显然是Django没有找到Html文件导致的,我们应该逐个排查问题
1. 是否注册了应用
描述
:Django提供了一个方法,当我们在
Setting.py
内的
TEMPLATES
配置项中设定
'APP_DIRS': True
时,Django将会在应用目录下的
templates
寻找文件
注意点
:如果我们使用这种方法来声明模板的位置,有一个前提是我们需要在
INSTALLED_APPS
中注册了这个应用Django才能顺利找到
2.在DIRS中声明
描述
:没有使用1中的方法,我们可以在DIRS中声明模板的位置,声明方法如下 。声明完毕之后Django将会按照DIRS中的顺序依次查找文件
3.检查一下应用子文件夹名称templates是否拼写错误
4.换一个浏览器或者清除一下浏览器缓存试一试
描述
:这个方法是笔者想出来但没有实践的,因为我出现TemplateDoesNotExist的问题时,即在Setting中声明了应用,也创建了templates文件夹并且文件引用的都很正确。我通过在setting.py中添加import语句导入应用来解决的问题(但是Setting.py不需要import应用的包)当然在此之后我把import删除没有出现TemplateDoesNotExist。我初步猜测是浏览器缓存更新不及时导致的,由于问题不具有复现性,这个猜想也不能实践。
问题描述使用Django中的模板创建视图,当return一个html文件的时候,出现了TemplateDoesNotExist的错误解决方法对于这个错误,显然是Django没有找到Html文件导致的,我们应该逐个排查问题1. 是否注册了应用描述:Django提供了一个方法,当我们在Setting.py内的TEMPLATES配置项中设定'APP_DIRS': True时,Django将会在应用目录下的templates寻找文件注意点:如果我们使用这种方法来声明模板的位置,有一个前提是我们需要在I
看了好多大佬的
解决
方法,基本上都是配置settings.py文件,配来配去搞了好几个小时,依然没有
解决
问题。
后来发现,提示说的是
template
s路径下找不到文件,那么我们就在项目里面自己建个文件夹,命名为
template
s。
运行发现,还是有问题,还是找...
正如英文提示的错误原因这样,就是模板不存在的问题,或者说
django
默认读取的路径范围还没有到你的模板文件所在的范围(虽然这里有点绕,但后面会有详细说明)。
添加os.path.join(BASE_DIR,“
template
s”)是有用的
我在巡查
解决
办法时,看到很多人说在
Django
的settings文件中在
TEMPLATE
S配置给DIRS添加os.path.join(BASE_DIR,“
template
s”)语句是无效的。
对!确实可以说是无效,但又确实有效。
无效:是因为你路径添加错了。
'BACKEND': '
django
.
template
.backends.
django
.
Django
Template
s',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'con
tex
'BACKEND': '
django
.
template
.backends.
django
.
Django
Template
s',
'DIRS': [os.path.join(BASE_DIR, '
template
s')],
'APP_DIRS': True,
'OPTIONS': {
创建项目命令项目名不要使用汉字 数字开头创建应用命令一定要进入到项目里创建应用启动项目时(null): can't open file 'manage.py': [Errno 2] No such file or directory没有在
django
项目中启动迁移时No changes detected没有在配置文件中注册appDid you install mysqlclient?在项目同名的目录下的init.py中加入
import pymysql
pymysql.install_as_MySQLdb(
'BACKEND': '
django
.
template
.backends.
django
.
Django
Template
s',
'DIRS': [os.path.join(BASE_DIR, '
template
s')],
#os.path.join(BASE_DIR, '
template
s')没了这
django
是直接把模板路径当作了绝对路径,找不到html文件。
查看了项目setting文件后,看到了其中有关于
Template
的设置方法,其中包括一个‘DIRS’的选项,
解决
方案:
'DIRS': [os.path.join(BASE_DIR), '
template
s'],..