使用 django 和 layui,TemplateSyntaxError 错误 {{# }}

  1. 报错
    使用 django 和 layui 写后台网站时,在 table.render({ })中使用 switch 开关,出现如下错误:
    django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: ‘# if(1){’ from ‘# if(1){’
    django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: ’ == 10006 ? ‘checked’ : ‘’’ from ‘d.id == 10006 ? ‘checked’ : ‘’’

  2. 分析:
    最终原因是 django 自动识别 {{ }} 为模板的变量代码:

    {{ 变量 }}:变量代码
    {% 代码段落 %}:逻辑代码

而 {{# if(false)}} 是 js 的逻辑代码,被django 误读,

  1. 解决办法:
    使用{% verbatim %}…{% endverbatim %} 标记即可

    # 形如:
    {% verbatim %}
    # 以下为 django的特殊标记
    {% extends "baseframe/basemanage.htm" %}
    {% load pager %}
    {% load convert %}
    {% block searchField %}
    {% endblock %}
    # 以上为 django的特殊标记
    {% endverbatim %}
    
  2. 代码复现
    js 代码:

    <script type="text/html" id="statusTemp">
    {{#  if(d.media.status==1){ }}
        <input type="checkbox" name="status" lay-skin="switch" checked   lay-text="开启|关闭"  value= {{ d.media.id}}  lay-filter="status" >
    {{#  } else { }}
        <input type="checkbox" name="status" lay-skin="switch"  lay-text="开启|关闭"  value= {{ d.media.id} lay-filter="status" >
    {{#  } }}
    

    报错信息:

    django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '#  if(d.media.status==1){'
    

    另一种方式:

    input type="checkbox" name="lock" value="{{d.id}}" title="锁定" lay-filter="lockDemo" {{ d.id == 10006 ? 'checked' : '' }}>
    
    

    报错信息:

    django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: ' == 10006 ? 'checked' : ''' from 'd.id == 10006 ? 'checked' : '''
    
  3. 参考资料

    django 模板中输出模板关键字 https://www.douban.com/note/353142936/

    有时候我们需要通过Django提供的模板工具来生成文件,但是文件中恰好又包括了Django模板的关键如:

    {% extends "baseframe/basemanage.htm" %}
    {% load pager %}
    {% load convert %}
    
    {% block searchField %}
    {% endblock %}
    我需要在我生成后的模板中保留这样的文字片段,在django1.5版本后内置了这样的一个标签,就可以将标签内的文字片段原样输出,而不进行解析如:
    {% verbatim %}
    {% extends "baseframe/basemanage.htm" %}
    {% load pager %}
    {% load convert %}
    {% block searchField %}
    {% endblock %}
    {% endverbatim %}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值