我最近将 Django 从 v1.3.1 升级到 v1.4。
在我以前的 settings.py
我有
TEMPLATE_DIRS = (
os.path.join(os.path.dirname( __file__ ), 'templates').replace('\\', '/'),
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
这将指向 /Users/hobbes3/Sites/mysite/templates
, 但是 because Django v1.4 moved the project folder to the same level as the app folders , 我的 settings.py
文件现在位于 /Users/hobbes3/Sites/mysite/mysite/
而不是 /Users/hobbes3/Sites/mysite/
.
所以实际上我现在的问题是双重的:
- 如何使用
os.path
从__file__
查看上一级目录.换句话说,我想要/Users/hobbes3/Sites/mysite/mysite/settings.py
查找/Users/hobbes3/Sites/mysite/templates
使用相对路径。 - 我应该保留
template
项目admin
中的文件夹(具有跨应用模板,如registration
、/User/hobbes3/Sites/mysite
等)水平或在/User/hobbes3/Sites/mysite/mysite
?
最佳答案
os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'templates'))
至于模板文件夹应该去哪里,我不知道,因为 Django 1.4 刚出来,我还没有看。您可能应该在 SE 上提出另一个问题来解决该问题。
您也可以使用normpath
来清理路径,而不是abspath
。但是,在这种情况下,Django 需要的是绝对路径而不是相对路径。
为了跨平台兼容性,请使用 os.pardir
而不是 '..'
。
关于python - 使用 Python 的 os.path,我如何上一个目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856683/