Django不会加载静态文件ValueError(“缺少'%s'的静态文件清单条目”“%clean_name)

Rob*_*iaz 2 python django production-environment django-staticfiles whitenoise

是我在Django中的第一个应用程序,我正在尝试准备将Django(2.0)应用程序用于生产,但是我无法使用WhiteNoise使静态文件正确加载

我一直一直在日志中遇到下一个错误

ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
ValueError: Missing staticfiles manifest entry for 'css/inicio.css'
[02/Jun/2018 14:40:37] ERROR [django.server:124] "GET /participation/prueba HTTP/1.1" 500 27
Run Code Online (Sandbox Code Playgroud)

我有以下settings.py

...
DEBUG=False
DJANGO_APPS = ['django.contrib.admin',
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.messages',
                #Delete for development whitenoise.runserver_nostatic
                'whitenoise.runserver_nostatic',
                'django.contrib.staticfiles',
                'django.contrib.sites'
               ]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
...
STATIC_URL = '/static/'

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

STATICFILES_DIRS = (
    (os.path.join(BASE_DIR, 'static')),
)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Run Code Online (Sandbox Code Playgroud)

我在根目录下将所有静态文件都放在一个名为static的文件夹中,当我运行manage.py collectstatic时,我会在staticfiles目录中生成所有静态文件,但是无论如何我还是无法使其运行。

我尝试找出问题所在,并且正在使用以下模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    {% load static %}
    <link rel="stylesheet" href="{% static "css/inicio.css" %}">
</head>
<body>


{% for categoria in categoria_list %}
    <p>
        {{ categoria.titulo }}
    </p>
{% endfor %}


</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经尝试将href的路径更改为

{% static "/css/inicio.css" %}
{% static "static/css/inicio.css" %}
Run Code Online (Sandbox Code Playgroud)

但没有一个使它加载

我也尝试了在Django应用中加载和未加载'whitenoise.runserver_nostatic'的情况,结果一直保持不变。

有人知道我在做什么错吗?

提前致谢。

小智 6

尝试删除此行,

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Run Code Online (Sandbox Code Playgroud)

资料来源:https : //stackoverflow.com/a/32347324/2596187


Aje*_*K.P 5

问题在于,您在模板中的某个地方引用了不存在的静态文件。具体来说,您将空字符串传递给 static。也许您有类似 {% static some_variable %} 的行,其中 some_variable 未定义?

在 Django 1.11 中,行为发生了变化,因此丢失文件时会引发错误。请参阅: https: //docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.manifest_strict

如果您修复了此引用,那么一切都应该可以正常工作。

下面的问题值得一读。 值错误 / 缺少“”的静态文件清单条目

这个答案是从https://stackoverflow复制的。com/a/49656053/3001007

另外,这里有一个详细的答案。 Django 模型:ValueError:缺少“file_name.ext”的静态文件清单条目