Django 压缩器抛出字典更新序列元素#0 的长度为 9; 2 是必需的
Django compressor throws dictionary update sequence element #0 has length 9; 2 is required
我正在使用 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 %}
我通过调用的脚本调用压缩命令:
./manage.py compress
无论我是通过脚本 运行 还是通过 shell 宁运行,结果都是一样的。
我已经尝试查看压缩器代码,但我不确定我在寻找什么,因为我真的不知道错误的含义。
我在网上看到文章说这是 django 的问题,但我没有升级 django 或 django-compressor 的选项。
希望有人能帮我解决这个问题。
谢谢,
导航
经过进一步调查,我发现我的 settings.py 有问题。
我的 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_PRECOMPILERS
总是作为列表读取,Django 总是可以接受它。
我正在使用 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 %}
我通过调用的脚本调用压缩命令:
./manage.py compress
无论我是通过脚本 运行 还是通过 shell 宁运行,结果都是一样的。
我已经尝试查看压缩器代码,但我不确定我在寻找什么,因为我真的不知道错误的含义。
我在网上看到文章说这是 django 的问题,但我没有升级 django 或 django-compressor 的选项。
希望有人能帮我解决这个问题。
谢谢, 导航
经过进一步调查,我发现我的 settings.py 有问题。
我的 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_PRECOMPILERS
总是作为列表读取,Django 总是可以接受它。