Python Django压缩器抛出字典更新序列元素#0的长度为9;2是必需的

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

我使用的是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/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')
]