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&amp;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标签调用

 extends标签和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基础

posted on 2020-12-04 19:17  chen_2987  阅读(489)  评论(0)    收藏  举报

导航