在Flask从基础到实战(二)说到了从浏览器传递参数给视图函数的方式,这次继续往下说。
正则路由匹配
如果对浏览器传入的参数,有条件限制的话,这时候就需要用到转换器
需求:要求传递过来的参数必须是数字类型的该怎么做呢?代码如下:
运行请求的结果,当输入的是数字的时候
当输入的是字符串的时候
这个时候,由于正则路由匹配的问题,就找不到我们自己定义的视图函数
flask中定义的正则路由有一下几种
如果现在的需求是对传入的参数不仅仅是数字类型的,还需要位数为三位数的,这个时候,系统的这些转换器则就不能满足条件了,这个时候就需要我们自己定义转换器,如下:
执行结果如下
r如果输入的数字为四位数字的话,则就访问不到我们定义的视图函数了
异常的抛出以及捕获
使用abort(状态码)(说明该处状态码为HTTP标准状态码)函数来抛出一个异常,使用errorhandler(状态码)装饰器来进行异常的捕获例子代码如下:
运行结果如下:
请求钩子
执行的结果为:
获取请求参数
状态保持
因为 http 是一种无状态协议,浏览器请求服务器是无状态的。
无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。
无状态原因:浏览器与服务器是使用 socket 套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的 socket 连接,而且服务器也会在处理页面完毕之后销毁页面对象。
有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等
实现状态保持主要有两种方式:
在客户端存储信息使用Cookie
在服务器端存储信息使用Session
cookie
设置cookie首先需要创建一个response对象,通过make_response()方法即可,导包
from flask import make_response
运行结果如下
session
对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息
在服务器端进行状态保持的方案就是Session
session依赖cookie存在
首先导包
from flask import session
运行后发现出现如下错误,提示需要配置一个secret_key
做如下配置即可:
运行结果
网友评论