flask框架知识点2(模版)------赶紧拿笔记一下,哈哈...

一.小定义解析

1.请求勾子(hook)
作用
在访问正常视图函数的时候回顺带执行请求钩子所装饰的方法

常见的请求勾子

                 

before_first_request
在处理第一个请求前执行,可以用来做初始化工作,比如:数据库的链接,表的创建
before_request
每次请求前都会执行,可以用来做: 参数校验,统计工作
after_request
每次请求之后执行,统一的设置数据的交互格式,比如:设置json格式
teardown_request

所有请求销毁之后执行,统计服务器的异常信息

2.Cookie
定义
用来记录客户端和服务器的一些交互信息,由服务器生成,存储在浏览器
设置格式
response.set_cookie(key,value,max_age),其中max_age是cookie的有效期,单位是秒,如果不设置默认就是一次浏览器会话结束
获取格式

request.cookies.get(key)

    

3.session
定义
用来存储客户端的敏感信息,比如:银行卡,手机号,密码等, 客户端访问,由服务器创建,存储在服务器
设置格式

session[key] = value

                                 

获取格式
<1>session[key]

<2>session.get(key), 推荐使用

                                

                                    

注意点
1. 使用session需要设置SECRET_KEY,因为sessionID(钥匙)的生成需要加密

2. sessionID是存在cookie中的,内容是存在服务器

3.context(上下文)

                

请求上下文
request:每次请求的时候,封装的是本次请求的参数内容,比如:url,methods等信息
session:第一次访问,在服务器内部给用户开辟对象空间,存储敏感信息
应用上下文
current_app:是app的一个代理对象,以后在模块化开发中需要在其他文件获取到app身上的内容的时候,可以使用

g:配合装饰器使用,在一次完整的请求中g都有效

4.Flask-Script 扩展
定义
用来通过Manager对象管理应用程序,可以通过命令方式启动程序,动态指定端口,ip
使用流程
1.  导入扩展包
pip install flask_script
2.  关联app应用程序
manager =  Manager(app)
3.  命令运行
python xxx.py runserver -h IP地址 -p 端口
注意点
1.通过命令运行程序

2.可以配合flask_migrate做数据迁移

二.模版

1.jinja2
定义:flask中页面的渲染是通过jinja2实现
实现渲染的方法:jinja2中提供的是render_template('文件名',key=value)方法实现的
好处:视图函数只负责业务逻辑和数据处理(业务逻辑方面)
而模板则取到视图函数的数据结果进行展示(视图展示方面)

代码结构清晰,耦合度低

2.模版语法
取变量的值
{{ 变量名 }}
分支语句if
    {% if 条件A %}
        语句1
                    {% elif 条件B %}
        语句2
                    {% else %}
        语句3
                    {% endif %}
执行流程 1.判断条件A,如果为True执行语句1
2.如果条件A,为False,判断条件B, 为True,执行语句2
3.同理..
循环语句for
{% for 变量名 in 容器%}
                {% endfor %}
注释

{# 中间是注释的内容 #}====>快捷键ctrl+/

3.过滤器
定义:jinja2中提供了一些自带的过滤器,可以用来过滤出需要的数据
分类:
字符串过滤器
格式
{{ 字符串 | 字符串过滤器名称 }}
分类
lower:字符串转换小写
upper:转大写
reverse:反转
safe:禁用转义
capitalize:把变量值的首字母转成大写,其余字母转小写
title:把值中的每个单词的首字母都转成大写
format:格式化输出
striptags:渲染之前把值中所有的HTML标签都删掉
列表过滤器
格式
{{ 列表 | 列表过滤器名称 }}
分类
first:第一个元素
last:最后一个元素
sum:求和
length:获取列表长度
sort:列表排序
自定义过滤器
方式
                                (前提是:必须导入render_template进行关联)
第一种
1. 先定义函数
2. 将函数添加到过滤器列表中
格式:
app.add_template_filter(函数名,过滤器名称)
第二种

直接使用@app.template_filter()装饰函数

4.模版代码复用
宏(macro)
定义:和python中函数很像,就是定义好了一段代码,需要的时候调用
格式:
{% macro 宏名(参数) %}
                        {% endmacro %}
使用场景:
对于有固定结构的表单内容,可以单独写到一个宏文件中
继承
特点:共性抽取, 代码复用,子类可以扩充独有内容
格式:
{% extends '文件名' %}
包含
特点:子模板完全拥有父类内容.
格式:
{% include '文件名' ignore missing %} 
注意点:使用ignore  missing的好处:ignore missing好处是模板文件名不存在不会报错
注意点

包含不能重写父类或子类的方法

5.特殊变量和函数
定义:模板中提供了一些特殊的变量,不需要传递到就可以使用
类:
request:
请求相关数据内容

config:指app对象的config属性

url_for():根据函数找路径

get_flahed_messages():用来消耗flash()中存储的数据,flash内容的存储依赖于了session所以需要设置SECRET_KEY.

猜你喜欢

转载自blog.csdn.net/wpb74521wrf/article/details/80868025