模板: 知名模板引擎:jinja2(flask默认的模板引擎) Mako 
	template模板路径:
		1.在渲染模板的时候,会默认从根目录下的templates目录下查找模板文件
		2.也可以自定义模板路径,Flask类的构造函数中定义了模板路径参数,所以可以在Flask初始化的时候指定template_folder参数。
		
	模板变量传参:
		单个变量可直接放在render_templates()参数中
		多个变量,可将参数变量 值放在一个字典中,
		render_template()函数中加入**字典名即可
	前端使用变量参数:
		{{用来存放变量 }}
		{% 用来执行函数或者逻辑代码 %}
			快捷键:Tab
			开始标签 结束标签
			jinja的for循环:
				{% for foo in list %}
				{% if loop.first %}
				...
				{% endif %}
				{% endfor %}
				其他loop方法:
					loop.last loop.index0(当前迭代的索引,从0开始) loop.index,loop.length (序列的长度)
	jinja2模板过滤器:
		作用:对后台传到前台的参数进行数据处理
		使用:通过管道符号{{变量名|过滤器名 }}
		
		常用过滤器:
			默认值过滤器:1.{{ 变量名|default(‘xxx‘,boolean=False)}}2.可以使用or来替代default {{ 变量名 or "" }}
			
		转义过滤器:jinja2自动转义默认成字符串,而不是html标签
		使用过滤器:防止转义 块区域防止转义:
			{% autoescape off %} {% endautoescape%}
		单变量防止转义:
			{% 变量名|safe %}
		某个字符串进行进行转义:
			escape
		
		format过滤器:
		{{ "我的名字是 %s " |format("hello") }}
		
		其他过滤器:
		first last length join int lower replace( old,new) truncate(length=30)截取 striptags string wordcount()计算单词个数
		
		自定义过滤器:
			在后端定义函数:自定义函数,然后注册到jinja2模板当中
			@app.template_filter(‘my_func‘)
			def func(value):
					value=xxx.x
				return value
宏:
	概念:模板中的宏和python中的函数类似,也可以传递参数,但不能有返回值,可以将经常用到的代码片段放到宏中,然后把不固定的值抽取出来当成一个变量参数 
	
	使用:参数可以为默认值
		1.可放在本html问价中
		2.也可以放在单独的tml文件中,将它导入 {% from .宏文件名 import 宏 as %}(导入宏文件,路径默认是在templates目录下查找)
		变量值的自动传递:
			导入宏的时候 若想把被导入宏的html文件的变量值自动传递到宏中,则导入时加入 with context
			
	定义宏:
		{% macro input(name,value=‘‘,type=‘{{  value }}‘ %}
	<input type="type" name="{{ name }} " value="{{ value }}">
	{% endmacro %}
	使用宏:
		<p>{{ input(‘username‘) }}</p>
		<p>{{ input(‘password‘,type=‘text‘)}} </p>
	
jinja2的include标签:
	1.这个标签相当于直接将模板中的代码复制粘贴到当前位置
	2.“include"标签,如果想要使用父模板的变量,直接用就可以了,不需要context
	3."include"的路径,直接从templates根目录下查找	
set with 定义变量用法:在模板中,可以用set定义变量
原文:https://www.cnblogs.com/szj666/p/11479370.html