使用Python的os.path,如何上传一个目录?

问题:

我最近将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/
所以我的问题其实是双重的:

  1. 如何使用os.path__file__查看一级以上的目录。换句话说,我想/Users/hobbes3/Sites/mysite/mysite/settings.py使用相对路径找到/Users/hobbes3/Sites/mysite/templates
  2. 我应该在/User/hobbes3/Sites/mysite级别还是在/User/hobbes3/Sites/mysite/mysite保留template文件夹(其中包含adminregistration等交叉应用模板)?

回答:

os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'templates'))

至于模板文件夹应该去哪里,我不知道,因为Django 1.4刚刚出来,我还没有看过它。你应该提出另一个问题来解决这个问题。
您还可以使用normpath清理路径,而不是abspath。然而,在这种情况下,Django希望绝对路径而不是相对路径。
对于跨平台兼容性,使用os.pardir而不是'..'

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Using Python’s os.path, how do I go up one directory?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

13 + = 14