You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:58:48