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

发布于 2021-01-29 17:57:14

我最近将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
关注者
0
被浏览
45
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'templates'))
    

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看