【发布时间】:2012-06-30 12:22:52
【问题描述】:
我正在使用 os 模块在我的 Django 项目settings.py 文件中拥有相对路径。变量 SITE_ROOT 设置为settings.py 文件的当前工作目录,然后用于引用同样位于同一目录中的所有static/media 目录。
这是我的问题:
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))
在 settings.py 中,上述语句都有相同的输出。但是我的模板只有在我使用SITE_ROOT = os.path.abspath(os.path.dirname(__file__))时才会加载
Django 在这里寻找模板:
TEMPLATE_DIRS = (
os.path.join(SITE_ROOT, 'templates'),
)
SITE_ROOT 设置为 os.getcwd() 似乎让 Django 在 settings.py 文件上方的目录中查找模板文件夹
我可以很容易地不使用os.getcwd(),并且我的网站运行良好,但我很好奇这里会发生什么:)
有人知道吗?
【问题讨论】:
-
当前工作目录和
__file__无关。第一个可以改变,取决于你从哪里运行程序以及你是否在其中使用os.chdir,另一个只取决于模块在文件系统中的位置。