澄清如何在Django中使用os.path.dirname

时间:2014-02-18 01:18:16

标签: python django dirname os.path

我正在使用Django 1.5和Python 2.7。我的项目目录是通常的:

有一个名为projectFolder的项目文件夹。在projectFolder中,还有另外两个文件夹:projFolder和projApp。

在projFolder里面是我的settings.py, init .py和urls.py.

在projApp里面是我的models.py,views.py和我的静态文件夹,它保存着我的模板。现在,在我的settings.py文件中,我有以下内容:

SITE_MEDIA_ROOT = os.path.join(
    os.path.dirname(__file__), 'projApp/', 'static/', 'site_media' 
)

上面的代码行完全正常,这就是我在我关注的教程中读到的内容。但是,不应该是

SITE_MEDIA_ROOT = os.path.join(
    os.path.dirname(__file__), '../', 'projApp/', 'static/', 'site_media' 
)

?根据我的理解,

os.path.dirname(__file__)

是当前文件所在目录的路径,对吗?因为settings.py在projFolder中,所以这将是projFolder。所以我不应该先退出当前目录,然后进入projApp文件夹才能进入静态文件夹?不行

os.path.dirname(__file__), 'projApp/', 'static/', 'site_media' 

意味着Django应该搜索

projectFolder/projFolder/projApp/static

?如果是,那么如何在不先退出当前settings.py目录的情况下找到静态?

1 个答案:

答案 0 :(得分:0)

是的,它应该:)至少是我的项目如何拥有它,除了..而不是BASE_DIR = os.path.dirname(os.path.dirname(__file__))

 print os.path.dirname(__file__)

我认为默认情况下它现在出现在setings.py中。

您是否10000%确定settings.py是您所说的位置?

也许尝试在settings.py中添加一些print语句并运行测试服务器,以查看这些路径的实际值

{{1}}