默认配置:

template_folder='templates' -----  模板的默认目录

render_template()   --------   (x)html自动转义

render_template_string()  ----    字符串自动转义

{% autoescape %} -------  手动设置是否转义

全局函数和辅助对象 -------  增强模板的功能

1.什么是转义

把有特殊意义的字符显示出来

html标签中的<>------&lt;&gt;

2.全局对象

config ----- Flask的配置信息

request -----  请求对象

session  -----  会话对象

g  ---------  请求相关的全局变量 (如:g.user)

url_for   --------  URL解析函数(如:静态文件地址解析、链接跳转地址解析)

get_flashed_messages()  ------------   会话消息

3.模板中变量的使用

  • {% ... %}用于语句  标签中可包含表达式
  • {{ ... }}用于表达式可以打印到模板输出
  • {# ... #}用于未包含在模板输出中的注释
  • # ... ##用于行语句

app.py中

@app.route('/index')
def index():age = 40money = 34return render_template('hello.html',age=age,money=money)

hello.html中

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>jianjia</title>
</head>
<body>
<p>我的年龄:{{ age }}</p>
<p>我的钱包:{{ money }}</p>
</body>
</html>

3.1模板标签内置判断条件

defined/undefined  -----  变量是否已经定义

none  -----   变量是否为None

number/string  -----  数字/字符串判断

even/odd   -----  奇偶判断

upper/lower   ---------   大小写判断

3.2for循环体内的变量

变量 描述
loop.index 当前循环迭代的次数(从1开始)
loop.index0 当前循环迭代的次数(从0开始)
loop.revindex 到循环结束需要迭代的次数(从1开始)

loop.revindex0

到循环结束需要迭代的次数(从0开始)

在for循环中使用continue/break

在app.py中加入

app = Flask(__name__)
app.jinja_env.add_extension('jinja2.ext.loopcontrols')

for循环中奇偶行设置不同样式

<li class="{{ loop.cycle('odd','even') }}"></li>

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>jianjia</title>
</head>
<style>.odd{color: green;}.even{color: red;}
</style>
<body>{% for k in user %}{% if k%4==0 and k%100!=0 or k%400==0 %}<li class="{{ loop.cycle('odd','even') }}">{{ k }}年是闰年</li>{% else %}<li class="{{ loop.cycle('odd','even') }}">{{ k }}年不是闰年</li></li>{% endif %}{% endfor %}
</ol></body>
</html>

3.3模板标签

设置变量,赋值操作,可以通过import导入

{% set key,value = (1,2) %}

使用with代码块,实现块级作用域

{% with %}

{% set value = 42 %}

{{value}} 只在代码块中有效

{% endwith %}

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>jianjia</title>
</head>
<body><h3>赋值的使用</h3>
{% with %}{% set temp = 43 %}{{ temp }}{% endwith %}
</body>
</html>

3.4模板语法的转义

  • 方式一:视为字符串
  • 方式二:使用raw标签

{% raw %}

......

{% endraw %}

4.过滤器

过滤器,修改变量(如:格式化显示)

用管道符号(|)分割{{ name|striptags }}

可以链式调用

可以用圆括号传递可选参数

4.1、过滤器的使用方式

方式一:用管道符号(|)

{{ value|safe }}

方式二:使用标签

{% filter upper %}

......

{% endfilter %}

4.2 内置过滤器

1.求绝对值:{{ value|abs }}

2.默认值显示: default(value,default_value="",boolean=False)

{{ value|default('默认值') }}

{{ value|d('默认值') }}

3.html转义:{{ value|escape }}或 {{ value | e}}

4.富文本内容转义显示:{{ value|safe }}

5.倒序显示:{{ value|reverse }}

4.3 自定义过滤器

方式一:使用装饰器注册

@app.template_filter('reverse')

def reverse_filter(s):

return s[::-1]

方式二:调用函数注册

def reverse_filters(s):

return s[::-1]

app.jinja_env.filters['reverse'] = reverse_filter

@app.template_filter('phone_format')
def phone_format(phone_num):"""电话号码过滤器"""return phone_num[0:3]+ '****' + phone_num[7:]
<h3>自定义过滤器的使用</h3>
<p>{{ phone|phone_format }}</p>

5.模板全局函数

  • range([start],stop[step])
  • dict(**items)
  • cycler(*items) ----  可用于css类名的循环
  • joiner(stp=',') ---- 可用于字符串的拼接
  • url_for  ----- URL解析函数(如:静态文件地址解析、链接跳转地址解析)
<h3>cycler函数的使用</h3>
{% set class_name = cycler('row1','row2') %}
{% for i in range(100) %}<p class="{{ class_name.next() }}">{{ i }}</p>
{% endfor %}<h3>url_for函数的使用</h3>
<!--req是函数名 -->
<a href="{{ url_for('req') }}">点我跳转</a>

6.模板中的宏

  • 把常用功能抽取出来,实现可重用
  • 简单理解:宏≈函数
  • 宏可以写在单独的html文件中
<h3>模板中的宏</h3>
{% macro input(name,type='text',value='') %}<div><input type="{{ type }}" name="{{ name }}" value="{{ value }}"></div>
{% endmacro %}{{ input(name='username',value='admin') }}

6.1 文件中宏的使用

1.将前面定义的宏保存为forms.html

2.导入:

{% import 'forms.html' as forms %}

{% from 'forms.html' import input %}

3.使用:<p>{{ forms.input('username') }} </p>

7.模板的继承

步骤一:将可变的部分圈出来(base.html)

{% block content %}

内容区域

{% endblock %}

步骤二:继承父模板

{% extands 'base.html' %}

8.消息闪现

第一步:在视图中产生一个消息(提示/警告/错误)

flash(msg_content,msg_type)

参数msg_content:消息内容

参数msg_type:消息类型

第二步:在模板中展示消息

get_flashed_messages(category_filter=["error"])

参数category_filter:对产生的消息按类别查询

FLASK模板学习笔记相关推荐

  1. Mustache模板学习笔记

    Mustache模板学习笔记 1 初体验 1.1 还可以对象形式做数据源 1.2 {{#param}}这个标签很强大,有if判断.forEach的功能. 1.2.1 如果迭代的是数组,还可以用{{.} ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的"章节7:创建TPL自定义模板",做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. ...

  3. C++模板学习笔记——模板实参

    对于函数模板,编译器通过隐式推断模板实参.其中,从函数实参来确定模板实参的过程被称为模板实参推断.在模板实参推断过程中,编译器使用函数调用中的实参类型来寻找模板实参,用这些模板实参生成的函数版本与给定 ...

  4. flask框架学习笔记

    flask_day01 pycharm创建项目,连接到远程gitee仓库,创建仓库flask_study,分支helloworld, 自带第一个程序"helloworld",运行程 ...

  5. “模板”学习笔记(7)-----数组模板+对象数组举例

    我们可以定义一个数组模板,并且利用该模板声明其数组成员.声明的方式非常简单,主需要一下两步: template<class ElementType,int n>; ElementType ...

  6. Flask框架学习笔记(1)

    1.Flask简介 Flask和Django一样,也是一个基于MVC设计模式的Web框架.也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序.这个 wdb 应用程序可以使一 ...

  7. Python Flask框架学习笔记14

    数据库一对一的关系: 实现一对一的关系,只需要在一对多的基础上,将"多"的那一端设置为"一"即可. 书上举得例子是:用户拓展表. 在公司业务增长的情况下,需要存 ...

  8. 网络编程flask一些学习笔记摘抄(一)

    来源:Flask---框架快速入门_菜鸟可以飞的博客-CSDN博客_flask (下面大多资料与来源文档一样,这里只是本人做了一些标注,建议直接看来源) 先来一个每个教程都有的简单例子: from f ...

  9. 黄勇-flask教程-学习笔记

    课时4-虚拟环境 pip install virtualenv            #安装虚拟环境 virtualenv venv                                   ...

最新文章

  1. python基础---模块与包
  2. R语言数据挖掘实践——系谱聚类
  3. 创建索引的方法有两种
  4. 申请 Let's Encrypt 数字证书,并安装cerbot快速上手教程~~
  5. NET防SQL注入方法
  6. MySQL不能启动 Can't start server : Bind on unix socket: Permission denied
  7. vue 进入首页只弹一个弹框_vue.js实现只弹一次弹框
  8. 基于python的文件处理
  9. Building JavaScript Games for Phones Tablets and Desktop(6)- 响应玩家输入
  10. 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
  11. cad pu插件下载lisp_25个常用CAD插件 合集 下载
  12. Java扫雷游戏的设计与实现毕业设计论文
  13. Linux 内核的网络协议栈
  14. c语言实验编码sdut,C语言实验一(1)
  15. 使用深度学习技术进行水印去除
  16. VUE移动端案例整合
  17. thinkphp5拼接数组查询条件
  18. arcgis api 4.X 加载天地图3D
  19. android MD风格组件(BottomNavigationView,配合lottie使用) (三)
  20. 亚特兰蒂斯_亚特兰蒂斯的命运与可下载内容的作用

热门文章

  1. TortoiseGit的使用详解
  2. 京东个人版C店即将上线
  3. CAD快速看图软件如何修改文字的样式
  4. 隆昌一中高考成绩查询2021四川,四川内江排名靠前的四大高中,有争议?2020年高考成绩说话!...
  5. 七、Kali Linux 2 渗透攻击
  6. 2020年Java框架排行榜,谁居榜首?
  7. weui uploader java_Weui 文件上传完整版示例
  8. CRC16-XMODEM 计算方法 | C语言实现
  9. Android Framework学习(八)之Handler消息机制(Native层)解析
  10. 真的以为看过几本理财书籍就能实现财富自由?