问题描述

for循环内部的值无法在for循环外部使用。

{% set facility = "NULL" %}
{% if s['log-filter'] is not none %}{% for PRI in s['log-filter'] %}{% set facility = PRI['facility'] %}test1 {{ facility }}{% endfor %}test2 {{ facility }}
{% endif %}

显示结果

 test local7
test2 NULL

根本原因

facility只在for 循环内部作用域中,在内部修改外部依然无法获取。

jinjia2跟Python一样也是使用栈的数据结构,先进后出,顺序执行。

解决办法

官方文档中提到使用namespace的方式解决上述问题。

Template Designer Documentation — Jinja Documentation (3.0.x)

实际测试

{% set ns = namespace(facility='any', severity='error') %}
{% if s['log-filter'] is not none %}{% for PRI in s['log-filter'] %}{% set ns.facility = PRI['facility'] %}test {{ ns.facility  }}{% set ns.severity = PRI['level']['equal'] | first %}test1 {{ ns.severity }}{% endfor %}test2 {{ ns.facility }}
{% endif %}

解决jinjia2 for循环变量作用域问题相关推荐

  1. HTML5学习笔记(十四):变量作用域

    在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量: function foo() {var x = ...

  2. Python中变量作用域问题

    我们经常听说Python函数访问局部变量.全局变量:在定义装饰器的时候,还会使用自由变量.这些不同的变量是如何赋值.初始化.查找及修改的呢?各自的作用细则又是什么样的呢?本篇尝试解答这个问题. Pyt ...

  3. Python中令人头疼的变量作用域问题,终于弄清楚了

    来源:Python数据之道 作者:大奎  整理:阳哥 学习Python变量过程中,曾经为变量混乱的作用域问题头疼不已,全局变量.局部变量.自由变量傻傻分不清,今天来跟大家分享 Python变量作用域 ...

  4. 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)

    JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...

  5. JavaScript高级程序设计 第四章---变量 作用域 内存

    第四章-变量 作用域 内存 关键字:变量 作用域 内存 本章内容 通过变量使用原始值与引用值 理解执行上下文 理解垃圾回收 4.1 原始值与引用值 ECMAScript 变量可以包含两种不同类型的数据 ...

  6. Go 学习笔记(6)— 变量定义、变量声明、变量作用域

    1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...

  7. linux shell for 循环变量,shell for循环总结

    1 shell for循环语法 for 变量 in 列表 do command1 command2 ... commandN done 1.1 读取列表中的值 #!/bin/bash for test ...

  8. 变量作用域函数作用域

    一. 变量作用域 1)全局变量 在全局环境下声明的变量被视为全局变量. 在没有使用var进行声明的时候,变量就被定义为全局变量.在ES5的严格模式下,如果变量没有使用var来声明是会报错的. 2)局部 ...

  9. 关于变量作用域的一点整理

    案例一: 1 var x=100; 2 alert(x); 3 //等同于 4 window.x=100; 5 window.alert(x); 理解:定义的全局变量都是window对象的属性,而一些 ...

  10. JavaScript变量作用域和内存问题(js高级程序设计总结)

    1,变量 ECMAScript和JavaScript是等同的吗?个人认为是否定的.我的理解是这样的,ECMAScript是一套完整的标准或者说协议,而JavaScript是在浏览器上实现的一套脚本语言 ...

最新文章

  1. python绘制曲线图-python绘制多个曲线的折线图
  2. int string java 呼转
  3. CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access
  4. ux.form.field.Year 只能选年的时间扩展
  5. ODBC驱动程序丢失解决方法
  6. PBRT 阅读 第一章
  7. 开源FTP 服务器 FileZilla Server
  8. vue开发pc端支付方式(支付宝、微信、银联)
  9. mysql workbench中PK,NN,UQ,BIN,UN,ZF,AI字段类型标识说明
  10. day_8——LeetCode1:两数之和
  11. 取消UL和OL符号以及padding和margin后恢复默认值的CSS
  12. Mysql主从延时-Multi-threaded slave statistics for channel
  13. 中小型企业Web开发框架
  14. 【2018-11-09】中证500指数的估值详情
  15. 用iconv 文件格式转换
  16. 逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)
  17. p2p sdk接口说明
  18. 11家PaaS公有云供应商服务功能要点比较
  19. Flash和HTML5那点事
  20. 基于Python的招聘信息的大数据可视化分析系统

热门文章

  1. PG概述及OSD对PG状态的影响
  2. 【托业】【新托业TOEIC新题型真题】学习笔记10-题库七-P7
  3. Excel表头怎么设计?这里有超全面的表头设计方法!一分钟可学会
  4. matlab学习笔记 repmat函数与kron函数之区别
  5. 用微信小程序发红包的两种方法
  6. 坯子库无法一键安装插件没用_坯子库管理器及坯子助手问题汇总
  7. 「How The Economic Machine Works」《经济机器是如何运转的》中文字幕
  8. 全新版大学英语综合教程第四册学习笔记(原文及全文翻译)——2A - Smart Cars(智能汽车)
  9. 计算机应用技术Word文档题目,计算机应用技术复习题(word版)
  10. CTEX加中英文摘要