我正在使用django-compressor和django-staticfiles(外部版本,我在Django 1.2上)。
当我尝试加载我的网站时,出现了一个错误:
我已经验证了
查看django-compressor代码,我找到了抛出异常的位置:
(请在代码中使用{{ STATIC_URL }}变量的第一个链接不使用,但第二个链接使用)
(我的错误日志中出现了以下内容)
正如你所看到的,screen.css文件被处理了两次,第二次成功。facebox.css文件第二次失败,可能是因为在模板上下文中第二次解析文件时未定义
显然,我可以通过不使用
为什么我的CSS文件会被处理两次?它们最初具有
相关设置:
当我尝试加载我的网站时,出现了一个错误:
TemplateSyntaxError: Caught UncompressableFileError while rendering: 'css/facebox.css' isn't accesible via COMPRESS_URL ('/static/') and can't be compressed
我已经验证了
COMPRESS_URL
等于STATIC_URL
,并且该文件实际上可以通过该URL访问。查看django-compressor代码,我找到了抛出异常的位置:
def get_basename(self, url):
try:
base_url = self.storage.base_url
except AttributeError:
base_url = settings.COMPRESS_URL
# I added the following print statement:
print "url: %s, base_url: %s" % (url, base_url)
if not url.startswith(base_url):
raise UncompressableFileError("'%s' isn't accesible via "
"COMPRESS_URL ('%s') and can't be "
"compressed" % (url, base_url))
我的模板中第一个{% compress css %}
块是这样的:
{% compress css %}
<link rel="stylesheet" href="/static/css/blueprint/screen.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/facebox.css" />
{% endcompress %}
(请在代码中使用{{ STATIC_URL }}变量的第一个链接不使用,但第二个链接使用)
(我的错误日志中出现了以下内容)
[Thu Oct 13 08:19:13 2011] [error] url: /static/css/blueprint/screen.css, base_url: /static/
[Thu Oct 13 08:19:13 2011] [error] url: /static/css/facebox.css, base_url: /static/
[Thu Oct 13 08:19:14 2011] [error] url: /static/css/blueprint/screen.css, base_url: /static/
[Thu Oct 13 08:19:14 2011] [error] url: css/facebox.css, base_url: /static/
正如你所看到的,screen.css文件被处理了两次,第二次成功。facebox.css文件第二次失败,可能是因为在模板上下文中第二次解析文件时未定义
{{ STATIC_URL }}
。显然,我可以通过不使用
{{ STATIC_URL }}
来解决这个问题,但这并不是一个可接受的解决方案。为什么我的CSS文件会被处理两次?它们最初具有
media='screen, projection'
,但我删除了它,认为它引起了问题。相关设置:
In [4]: from compressor.conf import settings
In [5]: settings.COMPRESS_ROOT
Out[5]: '/home/ianchat/static_files'
In [6]: settings.STATIC_ROOT
Out[6]: '/home/ianchat/static_files'
In [7]: settings.COMPRESS_URL
Out[7]: '/static/'
In [8]: settings.STATIC_URL
Out[8]: '/static/'
In [9]: settings.COMPRESS_OUTPUT_DIR
Out[9]: 'CACHE'
In [10]: settings.COMPRESS_CSS_FILTERS
Out[10]: ['compressor.filters.csstidy.CSSTidyFilter']
In [11]: settings.STATICFILES_FINDERS
Out[11]:
('staticfiles.finders.FileSystemFinder',
'staticfiles.finders.AppDirectoriesFinder',
'staticfiles.finders.LegacyAppDirectoriesFinder',
'compressor.finders.CompressorFinder')