Flask从基础到实战(三)

    在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

做如下配置即可:

运行结果

你可能感兴趣的:(Flask从基础到实战(三))