-
报错
使用 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’ : ‘’’ -
分析:
最终原因是 django 自动识别 {{ }} 为模板的变量代码:{{ 变量 }}:变量代码
{% 代码段落 %}:逻辑代码
而 {{# if(false)}} 是 js 的逻辑代码,被django 误读,
-
解决办法:
使用{% verbatim %}…{% endverbatim %} 标记即可# 形如: {% verbatim %} # 以下为 django的特殊标记 {% extends "baseframe/basemanage.htm" %} {% load pager %} {% load convert %} {% block searchField %} {% endblock %} # 以上为 django的特殊标记 {% endverbatim %}
-
代码复现
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' : '''
-
参考资料
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 %}