settings.py
Django 项目的文件包含这两行:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
我想知道区别,因为我认为两者都指向同一个目录。如果您可以提供一些 os.path 函数的链接,这也会有很大的帮助。
BASE_DIR
正在指向parent的目录PROJECT_ROOT
。您可以将这两个定义重写为:
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(PROJECT_ROOT)
因为os.path.dirname()功能 https://docs.python.org/3/library/os.path.html#os.path.dirname只是删除路径的最后一段。
上式中,__file__
name 指向当前模块的文件名,参见Python数据模型 https://docs.python.org/3/reference/datamodel.html?highlight=__file__:
__file__
是加载模块的文件的路径名(如果是从文件加载的话)。
然而,它可以是一个relative路径,所以os.path.abspath()功能 https://docs.python.org/3/library/os.path.html#os.path.abspath用于在仅删除文件名并将完整路径存储到模块所在目录之前将其转换为绝对路径PROJECT_ROOT
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)