python ‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)] NameError: name ‘os‘ is not defined
过年了准备跳槽,现在python这么火,感觉学习一下可能会很有用,于是网上找教程,在搭建Diango+python的时候突然一脸懵逼,一步步按照网上说的来的,可是第一步就报错了
我们可以看到报错提示os未定义,翻了下配置文件确实上面没有定义这个os
但是使用的BASE_DIR确有定义,我也是刚学python,不清楚这个os具体代表什么,为什么没有,可能是版本不同?
我使用的python是3.9.2
网上教程使用的大部分还是3.6之前的
然后我查了下资料,说这里只是指定那个文件templates的目录而已
将os.path.join(BASE_DIR, ‘templates’)改为’templates’是一样的意思
于是我就删除了
删除了再运行就没报错了
20210224更新
今天在网上又逛了一圈
在一篇文章中看到了os为什么报错的原因
出错信息如下:
‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]
NameError: name ‘os’ is not defined
在项目下settings.py文件中“TEMPLATES”中,默认会增加一行“‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]”用于配置模板地址。
NameError: name ‘os’ is not defined 说明没有找到OS
解决方法:
1、在settings.py文件头部增导入OS
import os
2、不用增加导入,修改默认生成的“‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]”,修改如下:
‘DIRS’: [Path(BASE_DIR, ‘templates’)]
原因说明:
3.4版本之后,建议pathlib代替os
针对3.4版本之后的更改我有个疑问,我看教程用的3.6.1的也没报错,不知道有没大佬解答下。
本文地址:https://blog.csdn.net/weixin_44887276/article/details/113988946