一尘不染

使用Python的os.path,如何进入一个目录?

django

我最近将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,但是因为Django v1.4将项目文件夹移动到了与应用程序文件夹相同的级别,所以我的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. 我应该保持template(其具有跨应用程序模板,如文件夹adminregistration在项目等)/User/hobbes3/Sites/mysite水平或在/User/hobbes3/Sites/mysite/mysite

阅读 570

收藏
2020-04-03

共1个答案

一尘不染

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

至于templates文件夹应该放哪里,我不知道自从Django 1.4刚问世以来,我还没有看过它。你可能应该在SE上问另一个问题以解决该问题。

你也可以使用normpath来清理路径,而不是abspath。但是,在这种情况下,Django需要绝对路径而不是相对路径。

为了实现跨平台兼容性,请使用os.pardir代替'..'

2020-04-03