解决jinjia2 for循环变量作用域问题
问题描述
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循环变量作用域问题相关推荐
- HTML5学习笔记(十四):变量作用域
在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量: function foo() {var x = ...
- Python中变量作用域问题
我们经常听说Python函数访问局部变量.全局变量:在定义装饰器的时候,还会使用自由变量.这些不同的变量是如何赋值.初始化.查找及修改的呢?各自的作用细则又是什么样的呢?本篇尝试解答这个问题. Pyt ...
- Python中令人头疼的变量作用域问题,终于弄清楚了
来源:Python数据之道 作者:大奎 整理:阳哥 学习Python变量过程中,曾经为变量混乱的作用域问题头疼不已,全局变量.局部变量.自由变量傻傻分不清,今天来跟大家分享 Python变量作用域 ...
- 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)
JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...
- JavaScript高级程序设计 第四章---变量 作用域 内存
第四章-变量 作用域 内存 关键字:变量 作用域 内存 本章内容 通过变量使用原始值与引用值 理解执行上下文 理解垃圾回收 4.1 原始值与引用值 ECMAScript 变量可以包含两种不同类型的数据 ...
- Go 学习笔记(6)— 变量定义、变量声明、变量作用域
1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...
- linux shell for 循环变量,shell for循环总结
1 shell for循环语法 for 变量 in 列表 do command1 command2 ... commandN done 1.1 读取列表中的值 #!/bin/bash for test ...
- 变量作用域函数作用域
一. 变量作用域 1)全局变量 在全局环境下声明的变量被视为全局变量. 在没有使用var进行声明的时候,变量就被定义为全局变量.在ES5的严格模式下,如果变量没有使用var来声明是会报错的. 2)局部 ...
- 关于变量作用域的一点整理
案例一: 1 var x=100; 2 alert(x); 3 //等同于 4 window.x=100; 5 window.alert(x); 理解:定义的全局变量都是window对象的属性,而一些 ...
- JavaScript变量作用域和内存问题(js高级程序设计总结)
1,变量 ECMAScript和JavaScript是等同的吗?个人认为是否定的.我的理解是这样的,ECMAScript是一套完整的标准或者说协议,而JavaScript是在浏览器上实现的一套脚本语言 ...
最新文章
- python绘制曲线图-python绘制多个曲线的折线图
- int string java 呼转
- CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access
- ux.form.field.Year 只能选年的时间扩展
- ODBC驱动程序丢失解决方法
- PBRT 阅读 第一章
- 开源FTP 服务器 FileZilla Server
- vue开发pc端支付方式(支付宝、微信、银联)
- mysql workbench中PK,NN,UQ,BIN,UN,ZF,AI字段类型标识说明
- day_8——LeetCode1:两数之和
- 取消UL和OL符号以及padding和margin后恢复默认值的CSS
- Mysql主从延时-Multi-threaded slave statistics for channel
- 中小型企业Web开发框架
- 【2018-11-09】中证500指数的估值详情
- 用iconv 文件格式转换
- 逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)
- p2p sdk接口说明
- 11家PaaS公有云供应商服务功能要点比较
- Flash和HTML5那点事
- 基于Python的招聘信息的大数据可视化分析系统
热门文章
- PG概述及OSD对PG状态的影响
- 【托业】【新托业TOEIC新题型真题】学习笔记10-题库七-P7
- Excel表头怎么设计?这里有超全面的表头设计方法!一分钟可学会
- matlab学习笔记 repmat函数与kron函数之区别
- 用微信小程序发红包的两种方法
- 坯子库无法一键安装插件没用_坯子库管理器及坯子助手问题汇总
- 「How The Economic Machine Works」《经济机器是如何运转的》中文字幕
- 全新版大学英语综合教程第四册学习笔记(原文及全文翻译)——2A - Smart Cars(智能汽车)
- 计算机应用技术Word文档题目,计算机应用技术复习题(word版)
- CTEX加中英文摘要