ValueError:即使在 collectstatic 之后也缺少静态文件清单条目

Posted

技术标签:

【中文标题】ValueError:即使在 collectstatic 之后也缺少静态文件清单条目【英文标题】:ValueError: Missing staticfiles manifest entry even after collectstatic 【发布时间】:2020-10-14 00:41:14 【问题描述】:

我收到服务器错误,因为 django 找不到我的静态文件之一,即使我可以在文件夹中看到它:

ValueError: Missing staticfiles manifest entry for 'staticfiles\assets\img\icons\theme\communication\adress-book-2.svg'

我在静态和静态文件中都看到了这个文件夹中的文件:

static\assets\img\icons\theme\communication\

模板中的文件路径:

% load static %
              <img src="% static 'assets\img\icons\theme\communication\adress-book-2.svg' %"  class="icon bg-primary" data-inject-svg="data-inject-svg">

运行collectstatic 没有任何效果。有什么想法吗?

谢谢!

编辑:忘记添加 settings.py 静态设置:

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

DEBUG_PROPAGATE_EXCEPTIONS = True

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

【问题讨论】:

该目录中的其他静态文件是否有效? 是的。我没有看到任何其他崩溃。虽然有趣的是,当我检查源代码时,看起来有些图像是从 /static/ 而不是 /staticfiles/ 加载的 为什么会有2个静态文件目录? 老实说,我不知道。我是 django 新手并将部署推送到 heroku。我阅读了加载静态文件的内容,当我运行收集静态文件时,它创建了第二个文件夹,可能基于我的 settings.py。也许这就是问题 第二个文件夹是因为你的 settings.py 而创建的 【参考方案1】:

首先你应该删除说:

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

然后你可以保留前两行:

STATIC_ROOT = os.path.join(BASE_DIR, 'Folder') #either put static or staticfiles and then remove the other folder
STATIC_URL = '/static/'

【讨论】:

感谢到目前为止的帮助。不幸的是,我仍然收到错误Missing staticfiles manifest entry 如果我尝试运行 staticfiles 命令,它说它将在设置中指定的目的地收集静态文件到 staticfiles,即使我更改了这些设置也不会说静态 如果您运行该命令,它是否仍会创建一个新文件夹? 是的。我实际上并没有删除文件夹,但命令说 0 个静态文件复制到 staticfiles 会不会是因为已安装应用中的'django.contrib.staticfiles',

以上是关于ValueError:即使在 collectstatic 之后也缺少静态文件清单条目的主要内容,如果未能解决你的问题,请参考以下文章

即使代码具有给定值,ValueError 也会引发

ValueError:在用户上设置`backend`属性

ValueError:在昏暗 2 处预期长度为 0 的序列(得到 1)

Keras ValueError:尺寸必须相等问题

ValueError:无法将字符串转换为浮点数:Python中的“lisans”

Django ValueError:无法将字符串转换为浮点数