3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架( 三 )

  • cookies:请求中的cookie dict
  • headers:HTTP请求头
  • 请求报文_练习
    1)获取get参数(request.args):请求不传,默认是None;获取get参数时,对未传值参数可以赋予默认值 , 常见应用场景为分页
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    2)解析请求头中的IP地址((request.headers):通过request.headers.get()获取请求头相关信息;request.remote_addr获取远程客户端ip地址
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    5.3.请求钩子问题:如下场景如何实现?
    • 每个请求中都要验证用户信息(是否已登录、是否有权限访问)
    • 限制来自某些IP的恶意请求
    针对上述问题 , 就可以使用钩子函数来解决;同时使用钩子函数可以减少重复代码的编写,便于维护;具体请求钩子装饰器函数如下:
    • before_first_request:服务器初始化后第一个请求到达前执行
    • before_request:每一个请求到达前执行
    • after_request:每次请求处理完成后执行,如果请求过程中产生了异常,则不执行
    • teardown_request:每次请求处理 完成后执行,如果请求过程中产生了异常也执行

    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    5.4.响应报文响应报文包含内容常用如下:
    • response:响应内容
    • status:响应状态码
    • headers:响应头信息
    那如何修改响应报文内容呢?常见方法如下:
    1)在return的时候将响应报文内容加上:响应内容、响应状态码、自定义响应头信息;不常用
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    2)构造一个响应对象make_response;常用
    响应对象方式一:构造的时候就将响应报文内容传进去
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    响应对象方式二:先将对象构造好 , 修改对象对应属性的值
    • make_response().headers:自定义响应头
    • make_response().status_code:响应状态码
    • make_response().response:响应内容

    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    问:如果响应内容我想返回图片视频,或者文字字体颜色、样式、大小都要定制怎么办呢?
    解决方案:响应内容以html返回,可以用html文件作为响应内容传到响应对象 make_response()里面;
    新建一个Directory , 名字命名为templates,将html文件放在该目录下,注意目录名字一定得叫这个,后面笔记内容会解释为什么叫这个名字;通过render_template生成html对象,传给make_response()响应对象 。
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    6. Flask视图重定向等内部视图
    1)redirect():实现重定向,常见场景用于退出/登陆后重定向网页页面
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    2)abort():处理错误,针对错误的状态码主动抛出报错;abort后面不需要再加return
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图

    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    问:能不能指定报错页面展示、或者自定义报错页面返回给客户端展示?
    示例代码模拟场景:对黑名单下的ip地址进行拦截,返回403状态码没有权限访问 , 并自定义报错页面;通过装饰器@app.errorhandler()的函数对abort()抛出的状态码进行处理,注意@app.errorhandler()修饰的函数要传入参数err , 打印出来发现err是403/404对应的报错信息
    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图

    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图

    3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架

    文章插图
    【3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架】

    推荐阅读