jinja2基本用法
1.html渲染接口数据
{% for item in devices_list %}
{{loop.depth}}
<tr data-row={{devices_list[0]}}>
<td>{{devices_list[0]}}</td>
<td>{{devices_list[1]}}</td>
<td>{{devices_list[2]}}</td>
<td>{{devices_list[3]}}</td>
<td>{{devices_list[4]}}</td>
<td>{{devices_list[5]}}</td>
<td>{{devices_list[6]}}</td>
<td><a target="_blank"
href="/view/detail?id=1&pic=06d1db6a83675cf5e30422dd8d3cb81f">详情</a></td>
</tr>
{% endfor %}
2.替换字符串
我在jinja2中有一个变量:test1=“这是value1替换“my_value1”(单词替换)
{{ test1 | replace("value1","my_value1") }}
我可以替换value1,但我也需要替换value2我如何才能这样做?(多次替换)
{{ test1 | replace("value1","my_value1") | replace("value2","my_value2") }}
jinjia2替换字符串案例:
<!--渲染接口返回数据--> {% for item in devices_list %} <tr data-row={{devices_list[0]}}> <td>{{loop.index}}</td> <td>{{item[0]}}</td> <td>{{item[1]|replace("0","未执行")|replace("1","成功")|replace("9","执行断言失败")|replace("4","执行异常")|replace("2","用例传参为空")}}</td> <td>{{item[2]}}</td> <td>{{item[3]}}</td> <td>{{ item[4] | replace("1","自动循环")| replace("2","指定次数或时间执行")| replace("3","手动|调试")}}</td> <td>{{item[5]}}</td> <td><a target="_blank" href="/user/device_details">详情</a></td> </tr>
#{{loop.index}}获取当前迭代的索引 从1开始
3.在html中获取flask的返回变量
{{变量名}}
4.flask返回html显示变量
#在模板文件中传参
return render_template('index.html',title='首恶')
#在html中显示
{{ title }}
5.url_for重定向
1.不带参数url_for()

作用:
(1)给指定的函数构造 URL。
(2)访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。
{{url_for('user.pt_conf')}}
2.带参数url_for()

6.html提交接口的两种方法:
<!-------------------带有div布局格式的表单提交数据----------------------> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>大蓝登录</title> <style> #submit1 { width: 100px; height: auto; /*颜色*/ background-color:yellow ; } #passwd1{ /*宽度*/ width: 172px; /*高度自动*/ height: auto; /*Position是用来对页面的元素进行定位的*/ position: absolute; top: 32px; left:75px; /*颜色*/ background-color:#77BFC7; } </style> </head> <body> <form action="/user/test_login" method="post"> <div> <label for="name">用户名:</label> <input type="text" id="name" name="user_name" placeholder="username"/> </div> <div> <label for="passwd">密码:</label> <input type="password" id="passwd1" name="user_passwd" placeholder="password"/> </div> <div> <button type="submit" id="submit1" class="submit_button">登录</button> <!--过滤按钮本身,值提交用户名、密码--> </div> </form> </body> </html> <!--:action为提交的接口函数 placeholder描述文本框 method为提交的方法,可以get,post 也可以通过url_for函数也接口<form action="{{url_for('user.test_login')}}" method="post"> --> <!-------------------直接使用form表单提交数据----------------------> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>layout 后台大布局 - Layui</title> </head> <body> <form action="http://127.0.0.1:5000/user/user_login" method="post"> <label for="username"> 用户名:</label> <input type="text" name="username" id="username" placeholder="请输入用户名"> <br> <label for="password">密码:</label> <input type="password" name="password" id="password" placeholder="请输入密码"> <br> <label>性别:</label> <input type="radio" name="sex" id="" value="0" checked>男 <input type="radio" name="sex" id="" value="1">女 <br> <input type="submit" value="提交"> </form> </body> </html>
7.条件判断和for循环
#_________________if判断____________________ {% if name == "18520103625" %} <p>条件不符合</p> {% elif "186122" in name %} <p>条件符合</p> {% else %} <p>走else路径</p> {% endif %} {% if 条件1 %} 语句块1 {% elif 条件2 %} 语句块2 {% else %} 不符合所有条件 {% endif %} #__________________for循环__________________ <body> <h1>Flask</h1> {% for item in l|listreverse %} {{ item }} <br> {% endfor %} </body> {% for item in list %} list不空是执行 {% else %} list为空时执行的默认语句块 {% endfor %}
8.extends标签和block标签include标签
项目开发过程中,有很多页面的某些内容都是一样的,比如导航条、页脚、菜单,在每个页面都是一样的,如果我们在每个页面都去写这些相同的代码,不仅不好维护代码也不方便修改。这个时候我们就可以使用{% extends %}或{% include %}标签了。
include标签和extends标签都可以实现代码分离,不同的是include直接在需要的地方导入即可{% include '123456.html' %},, 而extends需要先导入{% extends '123456.html' %},然后通过block标签调用。

备注:cms_base.html是公用的,cms_index.html是不同页面,把不同页面标签传到公用标签去展示。
相关连接:
https://blog.csdn.net/Noah_Kwan/article/details/78078833 .........................Flask入门Jinja2 模板
https://blog.csdn.net/qq_43281189/article/details/88046979 .....................Jinja2基础
https://blog.csdn.net/HaigLee/article/details/81784980 .............................Jinja2模板渲染
https://blog.csdn.net/weixin_42763269/article/details/111059586..............模板继承之block,extends,include
https://www.jb51.net/article/143981.htm ................................................... Jinja2基础
浙公网安备 33010602011771号