今天又是一个精彩又无聊的一天,不过随着知识的缓慢的增加我的内心也充满了干劲,虽然前进的有些缓慢 但我不会这么容易放弃的,一定要相信自己,不要灰心

好了 ~ 不说废话了 , 我自己听的都有些受不了了 。

  我呢  , 今天学习了模板,在这里我给大家说说几句 关于模板的

  首先说一下模板的作用:模板可以承担视图函数又可以返回响应的内容

  视图函数只负责业务逻辑和数据处理(业务逻辑方面),而模板则取到视图函数的数据结果进行展示(视图展示方面)

代码结构清晰,耦合度底。

  模板引擎有很多,不过在这里我给大家说的是Jinjia2 ,它是在Python下一个被广泛应用的模板引擎,是有Python实现的模板语言,他的设计思想来源于Django的模板引擎,并扩展了其语法金和一系列强大的功能,其实Flask内置的模板语言。

  模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,途欢模板的特定文职上预先定义好的占位变量名。

  渲染模板函数:Flask提供的render_template函数封装了该模板引擎,render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对,表示模板中变量对应的真实值。

  {{}} 来表示变量名,这种语法叫做变量代码块,在变量代码块中可以是任意Python类型或者对象,只要能够被转换成str()类型就可以,{%%} 用这个来定义的控制块代码,可以实现一些语言层次的功能,比如循环语句或者if语句,{##} 使用这个符号进行注释,注释的内容不会再html中被渲染出来。

  接下来我给大家展示一个实例:

  第一步 当然先导入模块啦

  from flask import,render_template

  建立对象

  app = Flask(__name__)

  导入配置文件  #我喜欢这个方法,当然也可以用其他的方法

  app.config.from_pyfile('config.ini')

 路由

  @app.route('/')

  def index():

    context = {}

    context['my_str'] = ‘你好世界’

    context['my_int'] = 100

    context['my_list'] = [4,3,2,4,2,3]

    context['my_dict'] = {'name':'xiaoming','age':19}

    使用render_template模块来渲染模板文件,通过第二个参数传递数据变量,通过**引用来将嵌套dict直接传递给模板

    return render_template('day3.html',**context)

 if __name__ == "__main__":

    app.run()

这是一个模板文件,还得写一个day3.html的文件的网页模板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>flask网页模板的学习</title>
</head>
<body>
 
 
<div>
这是我们的网页模板
<br /><br />
{# 这里是注释,最基本的模板语法,输出一个变量 #}
{{ my_str }}
<br /><br />
{# 模板语法可以做简单的运算操作#}
{{my_int+44}}
<br /><br />
{# 模板语法可以以下标引用的方式输出list元素#}
{{my_list [0] }} {{my_list.1 }}
<br /><br />
{{my_dict['name']}} {{my_dict.age}}
<br /><br />
{# 使用{%%}来定义简单的逻辑控制代码#}
{% if my_int %}
整形存在
{% else%}
不存在
{# 使用if判断,一定要有endif 用来结束逻辑判断#}
{% endif%}
<ul>
{# 使用for循环来遍历list , for 也必须endfor 用来结束循环 #}
{% for item in my_list %}
<li>{{item}}</li>
{% endfor %}
</ul>
{# 使用 if for 嵌套来实现单双行背景色 #}
<table style="border:1px solid black; padding:5px;">
{% for item in my_list %}
{# 使用loop关键字可以调用循环的索引,用来判断下标单双数 #}
{% if loop.index % 2 == 0 %}
<tr style="<td>{{ item }}</td></tr>
{% else %}
<tr style="<td>{{ item }}</td></tr>
{% endif %}
{% endfor %}
</table>
</div>
</body>
</html>

接下来说一下过滤器:

过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化,运算等等,而在模板中是不能直接调用Python中的某些方法,那么过滤器的作用就找到了。

使用方法:变量名|过滤器  {{variable | filter_name(*args)}},如果没有任何参数传给过滤器,则可以把括号省略掉 ,

链式调用:{{“helloworld”|reverse|upper}}

常见内建过滤器,字符串操作,   safe:禁用转义  <p>{{'<em>hello</em>'|safe}}</p>

capitalize:把变量值得首字母转成大写,其余字母小写 <p>{{'hello'|capitalize}}

lower:把值转成小写    <p>{{'HELLO'|lower}}</p>

upper:把值转换成大写 ,title:把值中的每个单词的首字母都转换成大写 , reverse:字符串反转,formate:格式化输出 <p>{{'%s is %d |formate{'name',17}'}}</p>

striptags:渲染之前把值中所有的HTML标签都删掉   <p>{{'<em>hello</em>'|striptags}}</p>

truncate:字符串截断  <p>{{'hello every one'|truncate(9)}}</p>

接下来是列表操作:

first:取第一个元素  <p> {{[1,2,3,4] | first}}</p>

last  :取最后一个元素,

length : 获取列表长度

sum:列表求和

sort:列表排序

语句块操作:
{%filter upper%}

#一段文字#

{%endfilter%}

控制块代码:

if语句

{% if %} {% elif %}

{% endif %}

循环语句:

{% for %}

{% endfor %}

就写这些了 ,   我要开始复习了    接下来的 什么时候有空在写  。

flask框架--模板的更多相关文章

  1. Python——Flask框架——模板

    一.渲染模板 render_template 函数把Jinja2模板引擎集成到程序中 二.Jinja2变量过滤器 过滤器名 说明 safe 渲染值是不转义 capitalize 把值得首字母转换成大写 ...

  2. flask框架模板系统

    flask模板引擎 flask默认使用了Jinja2模板引擎,我们在使用模板的时候,需要在同级目录文件夹下 创建一个templates的文件夹,然后这个文件夹内放置我们想要的模板实例即可: 在正常普通 ...

  3. flask框架学习

    第一:flask框架基础入门 第二:flask框架框架概述 第三:flask框架请求数据 第四:flask框架路由系统 第五:flask框架静态文件 第六:flask框架模板引擎 第七:flask其他 ...

  4. flask框架下的jinja2模板引擎(2)(过滤器与自定义过滤器)

    flask框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html 这篇论文主要用来记录下 jinja2 的过滤器. 什么是过 ...

  5. flask框架下的jinja2模板引擎(1)(模板渲染)

    #转载请留言联系 模板是什么? 在 flask 框架中,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.模板作用即是承担视图函 ...

  6. flask框架下的jinja2模板引擎(3)(模板继承与可以在模板使用的变量、方法)

    flask 框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html flask 框架下的jinja2模块引擎(2):http ...

  7. Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、session

    Flask框架(二)—— 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 ...

  8. Flask框架 请求与响应 & 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  9. Flask框架(2)-JinJa2模板

    为了把业务逻辑和表现逻辑分开,Flask把表现逻辑移到JinJa2模板,模板是一个包含响应文本的文件.它用占位变量表示动态部分,其具体要从请求上下文才知道. 把真实值替换掉占位变量成为渲染,JinJa ...

随机推荐

  1. java保存繁体字到数据库时就报错Incorrect string value: '\xF0\xA6\x8D\x8B\xE5\xA4...' for column 'name' at row 1

    问题分析 普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题 ...

  2. 2019.02.09 bzoj4455: [Zjoi2016]小星星(容斥原理+dp)

    传送门 题意简述:给一张图和一棵树(点数都为n≤17n \le17n≤17),问有多少种给树的标号方法方法使得图中去掉多余的边之后和树一模一样. 思路: 容斥好题啊. 考虑fi,jf_{i,j}fi, ...

  3. 2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)

    传送门 由题可知给出的是基环森林. 因此对于每个基环森林找到环断开dpdpdp两次就行了. 代码: #include<bits/stdc++.h> using namespace std; ...

  4. java常用设计模式九:桥接模式

    一.概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式.比如存在2个维度,第一个维度有一个抽象类A和对应的子类A1和A2:第二个维度有另一个接口B和对应的子类B1和B2 ...

  5. mysql delete from table 失败

    SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; TRUNCATE TABLE ...

  6. 知识点:CSS代码语法

    css 样式由选择符和声明组成,而声明又由属性和值组成,如下图所示: 选择符:又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝色,而其他的元素(如ol)不会受到 ...

  7. 前端- html 和css

    html HTML 指超文本标签语言. HTML 是通向 WEB 技术世界的钥匙. html属性:所有标签的通用属性 html事件:On...html5加了很多事件 html视频/音频:处理音视频 h ...

  8. C++二级指针第一种内存模型(指针数组)

    二级指针第一种内存模型(指针数组) 指针的输入特性:在主调函数里面分配内存,在被调用函数里面使用指针的输出特性:在被调用函数里面分配内存,主要是把运算结果甩出来 指针数组 在C语言和C++语言中,数组 ...

  9. noip2017d1t1

    我们知道因为a,b互质,ax+by=n若存在一组解(x0,y0),则(x0+kb,y0-ka)也是一组解,而我们要保证有正整数解的情况下n最大,我们不妨将x0设为最大的负整数-1,考虑最大的y0能为多 ...

  10. oracle之简单总结

    视图: 作用:是数据库对象,是一个或多个表的或视图中导出的虚表,视图对应的数据并不是存储在视图中,而是存储在数据库中的数据表中. 视图的结构和数据是对数据表进行查询的结果. 优点: 1.简化数据操作. ...