Python:Django 中{{ }}标签与layui的 laytpl的模版分隔符冲突解决方法

在使用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>

猜你喜欢

转载自blog.csdn.net/weixin_38676276/article/details/107924536
今日推荐