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

标签 python 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 , 但是 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. 我应该保留 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/

相关文章:

python - python-social-auth 中的用户名

python - 如何在同一个包中导入 __init__.py 中定义的类?

python - Django对象.get_or_create() : passing arguments from dictionary or list

python - 用于图像验证的 PIL 或 imghdr

python - “串行”对象没有属性 'is_open'

python - 在图像中组合水平对齐的多边形

python - 有没有更好的方法来使用另一个单元格在 Numpy 矩阵中创建一个值

python - 将 SQL 查询转换为 ORM 查询 Django

python - Django 管理员不显示来自 Imagefield 的图像

python - Django UpdateView 不上传 ImageField