django收集静态寻找不存在的目录

Posted

技术标签:

【中文标题】django收集静态寻找不存在的目录【英文标题】:django collect static looking for nonexistent directory 【发布时间】:2014-05-06 17:33:52 【问题描述】:

我正在本地运行一个现有项目。我正在尝试收集静态内容以查看我的 CSS、图像等。

我的项目结构如下:

我的项目名称

--- 我的项目名称

--- --- 我的项目名称

--- --- --- 设置

--- --- --- --- base.py (setting.py)

--- --- 静态

--- --- --- 图片

Settings 设置了以下静态值:

STATIC_ROOT = '/Users/myuser/myprojectname/myprojectname'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    #normpath(join(SITE_ROOT, 'static')),
    os.path.join(BASE_DIR, "static"),
    '/Users/myuser/myprojectname/myprojectname/static',
)

我尝试在我的模板页面中查看图像,如下所示:

% load staticfiles %

<img src="% static "image/logo.png" %" />

图片无法加载。当我看到图像的路径时,一切看起来都很好,它指向:localhost/static/image/logo.png

当我尝试收集静态时,我收到以下错误:

for entry in os.listdir(path):
OSError: [Errno 2] No such file or directory: '/Users/myuser/myprojecname/myprojectname/myprojectname/static'

*注意它正在寻找 3 个 myprojectname 目录。

问题是我看不到像这张图片这样的静态内容。我做错了什么?

【问题讨论】:

我注意到您可以互换使用“myprojecname”和“myprojectname”。这是笔误吗? 看起来它正在寻找/Users/myuser/myproject/myproject/myproject/static 并且需要/Users/myuser/myproject/myproject/static。请注意,“myproject”在前者中出现三次,而在后者中仅出现两次。 我确实看到了,但为什么要查看 3 次? 【参考方案1】:

我认为您在这里有些困惑。 STATICFILES_DIRS 是您从中收集的目录列表(以及应用程序中的所有其他静态文件夹)

STATIC_ROOT 是放置您正在收集的静态文件的位置。 所以它们不能是同一个文件夹。

【讨论】:

那么我应该如何更改它们呢?这在其他几个项目中对我有用。你能看到当我收集静态文件时它正在查看 myprojectname 的 3 个目录吗?

以上是关于django收集静态寻找不存在的目录的主要内容,如果未能解决你的问题,请参考以下文章

Django中静态文件之各个配置详解

Django:/ Login /上的TemplateDoesNotExist(源不存在)

模板不存在。加载静态文件和模板 Django 项目结构

我的 Django 静态文件在哪里?

不小心删除了我的 django south 迁移目录

django中怎么载入css等静态文件