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

做如下配置即可:

运行结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 月下独酌,与影随行。
    末修阅读 176评论 0 0
  • 到了夏天,太阳很大,或者雨天,那么,自行车上伞的载体就很重要了
    蕙质君阅读 232评论 0 0
  • 来到运城国际学校之前,对于南明教育及生活老师只是初步的认识,培养一个自由发展的人。记得每天都会查看学校的微信公众...
    原晓丹阅读 288评论 0 1
  • 魏叫小兽TV 1.寒假来了又,家长要不要给孩子报名一个架子鼓的特长班,以及在学和玩之间怎么做一个衡量?这里有一个误...
    魏叫小兽阅读 134评论 0 0