在使用layui的时候,需要使用到layui数据表格的模板,这时候遇到了{ {}}转义的问题。在django中{ {}}是获取变量值,这就跟layui的laytpl模板分隔符{ { }} 【{ {}} 在laytpl中是默认的分隔符】冲突了。
方法一:如果当前页面没有使用layui的table,则可以使用重新定义分隔符
laytpl.config({
open: '<%',
close: '%>'
});
//分割符将必须采用上述定义的
laytpl([
'<%# var type = "公"; %>' //JS 表达式
,'<% d.name %>是一位<% type %>猿。'
].join('')).render({
name: '贤心'
}, function(string){
console.log(string); //贤心是一位公猿
});
方法二:如果当前页面使用了layui的table,这时候就需要django不转译指定的内容。
千万不可重新定义分隔符,因为layui的数据表格组件的源码中已经将分隔符写死,所以无法通过laytpl.config自定义模板分隔符来解决问题。
如果使用了,页面会出现一对乱码
{
{# if(d.data.toolbar){ }}
{
{# } }}
{
{# if(d.data.loading){ }}{
{# } }}{
{# var left, right; }}
{
{# layui.each(d.data.cols, function(i1, item1){ }}{
{# layui.each(item1, function(i2, item2){ }}{
{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}{
{# if(item2.fixed === "right"){ right = true; } }}{
{# var isSort = !(item2.colGroup) && item2.sort; }}{
{# }); }}{
{# }); }}
{
{# if(item2.type === "checkbox"){ }}{
{# } else { }}{
{item2.title||""}}{
{# if(isSort){ }}{
{# } }}{
{# } }}
{
{# if(item2.type === "checkbox"){ }}{
{# } else { }}{
{item2.title||""}}{
{# if(isSort){ }}{
{# } }}{
{# } }}
感谢:https://www.cnblogs.com/ligh-test/p/9838145.html
从Django 1.5开始,支持{% verbatim %}标签(verbatim的意思是逐字翻译的,字面意思的),Django不会渲染verbatim标签包裹的内容。
所以只需要在{ {}}前后加上{% verbatim %} 和 {% endverbatim %}标签即可
原报错代码:
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">{
{ d.name }} </a>
修改后可执行代码:
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">{% verbatim %}{
{ d.name }} {% endverbatim %}</a>