Python Django压缩器抛出字典更新序列元素#0的长度为9;2是必需的
我使用的是django compressor 1.4,为了找到以下错误的根本原因,我已经奋斗了好几个小时:Python Django压缩器抛出字典更新序列元素#0的长度为9;2是必需的,python,django,django-templates,django-compressor,Python,Django,Django Templates,Django Compressor,我使用的是django compressor 1.4,为了找到以下错误的根本原因,我已经奋斗了好几个小时: dictionary update sequence element #0 has length 9; 2 is required 包含{%compress%}标记的所有其他模板工作正常,并且仅在一个模板上发生错误 模板代码为: {% load compress %} {% compress js %} <script src='{{ STATIC_URL }}trove/j
dictionary update sequence element #0 has length 9; 2 is required
包含{%compress%}
标记的所有其他模板工作正常,并且仅在一个模板上发生错误
模板代码为:
{% load compress %}
{% compress js %}
<script src='{{ STATIC_URL }}trove/js/ZeroClipboard.js' type='text/javascript' charset='utf-8'></script>
<script src='{{ STATIC_URL }}trove/js/clipboard.js' type='text/javascript' charset='utf-8'></script>
<script src='{{ STATIC_URL }}trove/js/jquery.tipsy.js' type='text/javascript' charset="utf-8"></script>
{% endcompress %}
无论是通过脚本还是通过shell运行,结果都是相同的
我已经尝试过查看压缩程序代码,但我不确定我在寻找什么,因为我不知道错误的含义
我在网上看过一些文章,说这是django的问题,但我没有升级django或django压缩机的选择
我希望有人能帮我解决这个问题
谢谢,
nav经过进一步调查,我发现我的settings.py有一个问题 My settings.py有:
COMPRESS_PRECOMPILERS = (
('text/scss', 'django_pyscss.compressor.DjangoScssFilter')
)
请注意,第一个元组后面没有逗号。正确的语法如下所示:
COMPRESS_PRECOMPILERS = (
('text/scss', 'django_pyscss.compressor.DjangoScssFilter'),
)
添加逗号使错误消失,文件按预期压缩
如果没有逗号,Python将外括号作为分组括号而不是元组读取。只有当元组中有一个项时,才会出现这种情况。为了避免这种情况,有些人更喜欢使用列表而不是元组:
COMPRESS_PRECOMPILERS = [
('text/scss', 'django_pyscss.compressor.DjangoScssFilter')
]
这样一来,
COMPRESS\u预编译器总是作为列表读取,Django总是可以接受它。你的Django版本是什么?@Selcuk我的版本是1.6。在1.9.x之前的Django版本中有一个已知的bug。如果无法升级,请尝试找到解决方法。请参见链接“谢谢”。我会看看我是否可以绕过这个问题,并将张贴解决方案。链接似乎正在讨论相同的错误,我有,但它是由于一个不同的问题,从外观上看。仍然没有找到解决办法。
COMPRESS_PRECOMPILERS = [
('text/scss', 'django_pyscss.compressor.DjangoScssFilter')
]