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

jinja2渲染模板报Missing end of comment tag错误如何处理

问题根因

你的判断是对的,报错由Jinja2默认语法和CSS语法冲突导致:
Jinja2默认将{#识别为模板注释的起始标记,会持续向后查找对应的结束标记#},直到文件末尾找不到就会抛出Missing end of comment tag错误。你模板里的CSS片段中,大括号{和紧邻的ID选择器前缀#刚好拼接成了{#组合,被Jinja2误判为注释开头,最终触发报错。

解决方法

根据模板实际情况二选一即可:

  • 方法1:标记原生内容块(推荐,无需改动全局配置)
    用Jinja2提供的raw块包裹所有不需要模板解析的CSS、JS代码段,Jinja2会完全忽略块内的语法,直接原样输出内容,示例:
    <style>
    {% raw %}
    /* 所有CSS代码放在raw标签内部,包括你提到的那行规则 */
    */#sidebar{position:absolute;top
    {% endraw %}
    </style>
    
    这种方式不需要调整模板里其他正常的Jinja2变量、逻辑代码,适配成本最低。
  • 方法2:自定义Jinja2全局分隔符
    如果模板里CSS/JS和Jinja2语法冲突的位置非常多,可以在初始化Jinja2环境时修改默认的分隔符规则,避开前端常用的符号组合,示例代码:
    templateEnv = jinja2.Environment(
        loader=templateLoader,
        # 替换默认分隔符为不会和前端语法冲突的组合
        comment_start_string='{=',
        comment_end_string='=}',
        variable_start_string='{{=',
        variable_end_string='=}}',
        block_start_string='{%=',
        block_end_string='=%}'
    )
    
    *注意:修改全局分隔符后,模板内所有Jinja2变量、逻辑块、注释的写法都要对应替换为新的分隔符格式,比如原来的{{ json_data.document_number }}需要改写为{{= json_data.document_number =}}。

内容的提问来源于stack exchange,提问作者mascai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:36:33