【发布时间】:2018-03-10 19:13:56
【问题描述】:
我正在尝试从 Django 1.9.7 迁移到 Django 1.11.5。我有三个不同的 django 应用程序,它们在包和设置方面几乎相同。我已经将这三个应用程序都部署到了 Web 服务器上,并且两个应用程序都可以正常运行,但是第三个应用程序让我很头疼 - 我一直收到这个错误:
ValueError at / Missing staticfiles manifest entry for ''
以下是来自settings.py 的最相关设置:
# -*- coding: utf-8 -*-
from settings import *
SECRET_KEY = '***'
SITE_ID = 3
ALLOWED_HOSTS = [
'localhost',
'127.0.0.1',
'.example.com',
'.example.com.',
]
INSTALLED_APPS += (
'storages',
'example',
'example2',
'el_pagination',
'debug_toolbar',
)
ROOT_URLCONF = 'example.urls'
WSGI_APPLICATION = 'example.wsgi.application'
DEFAULT_FROM_EMAIL = 'web@example.com'
MANAGERS = ADMINS
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'DEFAULT_MIDDLEWARE_ALIAS': 'default',
'DEFAULT_MIDDLEWARE_SECONDS': '300',
'DEFAULT_MIDDLEWARE_KEY_PREFIX': '',
}
}
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.SHA1PasswordHasher',
)
#AWS_HEADERS = { # see http://developer.yahoo.com/performance/rules.html#expires
# 'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
# 'Cache-Control': 'max-age=94608000',
#S }
# AMAZON S3 & CLOUDFRONT SERVING MEDIA FILES
AWS_S3_HOST = 's3.eu-central-1.amazonaws.com'
AWS_STORAGE_BUCKET_NAME = '***'
AWS_CLOUDFRONT_DOMAIN = '***.cloudfront.net'
AWS_ACCESS_KEY_ID = "***"
AWS_SECRET_ACCESS_KEY = "***"
MEDIAFILES_LOCATION = 'example/media'
MEDIA_ROOT = '/%s/' % MEDIAFILES_LOCATION
MEDIA_URL = '//%s/%s/' % (AWS_CLOUDFRONT_DOMAIN, MEDIAFILES_LOCATION)
DEFAULT_FILE_STORAGE = 'example.custom_storages.MediaStorage'
# WHITENOISE SERVING STATIC FILES
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, '***/static/example')
STATIC_URL = '/static/'
我不知道为什么会出现此错误,因为与其他两个正常运行的应用程序相比,我没有做任何不同(部署时)。设置几乎一样!我也尝试清空 .css 文件,这样我就可以排除 css 文件在某个地方指向不存在的文件的可能性,但这没有帮助。我已经更新了我的网站正在使用的所有软件包。 此应用在 Django 1.9.7 下正常运行,但我无法使其在 1.11.5 下运行。
编辑 - 我是如何解决这个问题的?
感谢@evansd 的回答,我终于找到了问题所在!在我的一个模板中,我有这段代码把整个事情搞砸了:
{% for num in numbers %}
<li>
<img src="{% static ''%}img/header/{{num}}.jpg" alt="image {{num}}"/>
</li>
{% endfor %}
我已将其更改为:
{% for num in numbers %}
<li>
<img src="{% static 'img/header/'|addstr:num|addstr:'.jpg' %}" alt="image {{num}}">
</li>
{% endfor %}
修复后一切正常!对于自定义 addstr 模板标签,请查看 this answer。
【问题讨论】:
标签: django