【问题标题】:Clarification on how to use os.path.dirname with Django关于如何在 Django 中使用 os.path.dirname 的说明
【发布时间】:2014-02-18 01:18:15
【问题描述】:

我正在使用 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__)

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

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

表示 Django 应该搜索

projectFolder/projFolder/projApp/static

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

【问题讨论】:

    标签: python django dirname os.path


    【解决方案1】:

    是的,应该:) 至少我的项目是这样的,除了 .. 是这样的:

    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    

    我认为它现在默认出现在 settings.py 中。

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

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

     print os.path.dirname(__file__)
    

    【讨论】:

    • 嗯好吧..现在我想起来了,我认为 SITE_MEDIA_ROOT 甚至不在 Django 文档中,我认为我什至没有在我的应用程序中使用它,我猜是为什么它没有给出任何错误。我认为我正在阅读的教程旨在编写 MEDIA_ROOT。
    • 没关系,在我的 urls.py 中,我确实使用了 SITE_MEDIA_ROOT,如下所示:" url(r'^site_media/(?P.*)$', 'django.views.static .serve', { 'document_root': settings.SITE_MEDIA_ROOT }),"
    • @user2719875 应该是MEDIA_ROOT 和/或STATIC_ROOT 一样,见docs.djangoproject.com/en/dev/howto/static-files/…
    • 嗯,好的,谢谢.. 我只是更改了我的 SITE_MEDIA_ROOT 并在前面添加了一个“../”,一切仍然正常。我现在把它和​​'../'放在一起。
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 2013-09-14
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2019-12-19
    相关资源
    最近更新 更多