2

raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name) ValueError: Missing staticfiles manifest entry for 'favicon.png' when DEBUG = False

我只在 DEBUG = False 时收到此错误,当 DEBUG = True 时我没有收到任何错误

要在保持 DEBUG = False 的同时解决此问题,我必须将 favicon.png(我已经删除了一段时间)添加回 static_root 文件夹,然后运行 ​​python manage.py collectstatic

我检查了所有文件,所有 html 文档都将链接 favicon.png 行注释掉,所以这不是问题。

settings.py 有以下内容:

STATIC_URL = '/static/'

STATICFILES_DIRS =[
    os.path.join(BASE_DIR, 'static_root'),
]

VENV_PATH = os.path.dirname(BASE_DIR)

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

urls.py 有以下内容:

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
4

2 回答 2

1

是的,我也有同样的问题。尝试运行manage.py collectstatic。顺便说一句,即使 DEBUG 设置为 False,您也应该在控制台中打开日志记录。该Django 文档有一篇文档文章。如果您没有在生产环境中使用不同的静态文件存储,而是在本地运行静态文件,您可能应该if settings.DEBUG:从 urls.py中删除。希望这有帮助!

更新: 我也已从项目STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'settings.py生产版本中删除。

于 2020-08-01T13:40:40.910 回答
0

我按照以下配置设置来解决问题。

DEBUG = False

ALLOWED_HOSTS = ['testnewapp.herokuapp.com']

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    'widget_tweaks',
    'phonenumber_field',
    'django_extensions',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
     os.path.join(BASE_DIR, "static"),
]

# Whitenoise Storage Class  - Apply compression but don’t want the caching behaviour
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

# Comment the below line
# django_heroku.settings(locals())


要记住的事情

  1. 确保您使用静态模板标签来引用您的静态文件,而不是直接编写 URL。例如:
{% load static %}
<img src="{% static "images/error.jpg" %}" alt="OOps!" />

<!-- DON'T WRITE THIS -->
<img src="/static/images/error.jpg" alt="OOps!" />
  1. 如果您收到 collectstatic 错误消息,只需通过指示 Heroku 在部署过程中忽略运行 manage.py collectstatic 命令来禁用它。
于 2020-01-31T21:34:04.237 回答