Mezzanine加载外部Recaptcha资源遇压缩器报错问题咨询
解决Mezzanine压缩器处理外部资源时的UncompressableFileError报错
我之前也碰到过一模一样的问题——Mezzanine集成的django-compressor会默认尝试压缩所有在压缩块内的JS/CSS资源,而像Google reCAPTCHA这种外部HTTPS资源,根本不在COMPRESS_URL指定的本地静态资源路径下,自然会触发UncompressableFileError。
给你几个实用的解决办法,按需选择:
方法一:把外部脚本移出压缩处理块
如果你的extra_js模板块是被包裹在{% compress js %}标签里的,直接把外部脚本放到压缩块外面就行,这样压缩器根本不会碰它:{% block extra_js %} {{ block.super }} {% endblock %} <!-- 外部脚本放在压缩块外,避免被压缩器处理 --> <script src="https://www.google.com/recaptcha/api.js" async defer></script>方法二:用
{% raw %}标签让压缩器跳过特定资源
要是必须把外部脚本留在extra_js块里,就用{% raw %}和{% endraw %}把它包裹起来,告诉压缩器“这部分不用你管”:{% block extra_js %} {{ block.super }} {% raw %} <script src="https://www.google.com/recaptcha/api.js" async defer></script> {% endraw %} {% endblock %}方法三:全局配置排除特定外部URL
如果你的项目里多处用到这类外部资源,直接在settings.py里添加COMPRESS_EXCLUDE_URLS配置,一次性让压缩器忽略匹配的URL:COMPRESS_EXCLUDE_URLS = ( r'^https://www.google.com/recaptcha/', # 后续可以添加其他需要排除的外部资源URL正则 )
这三个方法都能解决问题,前两个是局部模板调整,灵活度高;第三个是全局配置,适合批量处理的场景。
内容的提问来源于stack exchange,提问作者demonno
相关产品推荐
相关产品推荐

