Flask进阶

  • Flask请求
    • Request请求对象
      • `request.args.get()`
      • 获取表单提交的信息
      • 请求钩子
  • Flask响应
    • json 数据格式
    • Cookie 和 Session
      • Cookie 对象
    • Session对象
      • 设置密钥的方法
      • 使用方法
  • 自定义错误页面

Flask请求

Request请求对象

Request请求对象封装了从客户端发来的请求报文,可以从其中获取请求报文中的所有数据。请求解析和响应封装实际上大部分是由Werk架ug完成的,Flask子类化Werkage的请求(Requestion)和响应(Response)对象,并添加了和程序相关的特定功能。

request.args.get()

该方法可以获取GET请求的参数。

127.0.0.0:5000/?name=andy&age=18
#注意:以?开始,&来连接不同的信息

可以的到其中的name 和age

获取表单提交的信息

代码:

from flask import  Flask,request,render_templateapp = Flask(__name__)@app.route('/login1',methods =['GET','POST'])
#
def login1():#获取提交方式if request.method =='POST':username = request.form['username']password  = request.form['password']message = f':{username}  {password}'return messagereturn render_template('login1.html')if __name__ == '__main__':app.run(debug = True)
  • 注意:路由‘/login1’和视图函数login1以及渲染模板中的模板名login1.html要一致。

请求钩子

有时需要对请求进行预处理(pre processing)和后处理(posprocessing),这时可以使用Flask提供的请求钩子(Hook),以注册在请求处理的不同阶段执行的处理函数(或称为回调函数,即Callback)。

Flask的请求钩子指的是在执行视图函数前后执行的一些函数,用户可以在这些函数里面做一些操作。Flask利用装饰器提供了4种钩子函数。

  • before_first_request:在处理第一个请求前执行。
  • before_request:在每次请求前执行。
  • after_request:每次请求之后调用,前提是没有异常。
  • teardown_request:每次请求之后调用,即使有异常。
@app.before_first_request
def before_first_request():print('before_first_request')

Flask响应

当在浏览器中输入一个网址时,Flask会先判断是否可以找到与请求URL相匹配的路由,如果没有则返回404响应。如果找到,则调用相应的视图函数。
视图函数的返回值构成了响应报文的主体内容。当请求成功时,返回状态码默认为200。
视图函数可以返回最多由3个元素组成的元组**;响应主体、状态码和首部字段。**其中,首部字段可以为字典,或是两元素元组组成的列表。
例如,最常见的响应可以只包含主体内容,示例代码如下:

@app.route('/index')
def index():

json 数据格式

一般使用jsonify()函数

from flask import Flask,jsonify
@app.route('/index')
def index():return jsonify(name ="小米",age ="18")

Cookie 和 Session

Cookie 对象

Cookie指Web服务器为了存储某些数据(如用户信息)而保存在浏览器上的小型文本数据。浏览器会在一定时间内保存它,并在下一次向同一个服务器发送请求时附带这些数据。Cooks通常被用来进行用户会话管理。
简单来说,就是存储临时数据
在Flask中利用Response类提供的set_cookie()方法
如:(省略了其余部分)

#导入创建Response`的库
from flask import make_response#获取response对象
response = make_response(('登录成功'))
#将用户名写入Cookie
response.set_cookie('username',username)
return response
  • 如果没有设置Cookie的过期时间,则在关闭浏览器时会自动清除
  • 清除Cookie
#设置过期时间为0,表示清除
response.set_cookie('username',",expires = 0)

Session对象

通俗理解,Session对象是对Cookie数据进行加密存储。

设置密钥的方法

  1. app.secret_key = '密钥’ ,密钥有自己写为字符串
  2. app.config['SECRET_KEY'] ='密钥'

使用方法

  • 写入Session
session['login_in'] = True

.Session是一个字典对象,使用上诉方法设置后,就可以根据其对应的真假来判断

  • 取值判断
if session.get('login_in'):
  • 清除
session.pop('login_in')

自定义错误页面

from flask import Flask ,request ,render_templateapp = Flask(__name__)     # 实例化Flask类
app.secret_key = "mrsoft" # 设置secret_key@app.route("/")
def index():'''首页'''return render_template('index.html')@app.errorhandler(404)
def page_not_found(e):return render_template('404.html'), 404if __name__ == "__main__":app.run(debug=True) # 运行程序

其中404.html就是我们自己定义的错误界面了

  • FastAPI ------框架基础
  • Flask实战----做了一个简易版CSDN

python前端学习-----Flask进阶相关推荐

  1. python前端学习-------Flask框架基础(建议收藏)

    Flask框架基础 下载并安装Flask框架 Flask基础 第一个Flask应用 开启调试模式 路由 变量规则 构造URL HTTP方法 模板 语法格式 模板变量 控制结构 条件控制语句 `if` ...

  2. python资料百度云-Java+Python+前端 学习资料大全 百度云盘

    Java架构师3大阶段 链接:https://pan.baidu.com/s/1DlXh33y5t4cZUmZH0cLvCw 提取码:5s76 2019前端架构阶段 链接:https://pan.ba ...

  3. python前端学习之css

    01-css的引入方式 在HTML中引入css方式总共有三种: 行内样式 内接样式 外接样式 3.1 链接式 3.1 导入式 css介绍 现在的互联网前端分三层: HTML:超文本标记语言.从语义的角 ...

  4. python 前端学习_python学习之路7 前端学习3

    1.页面布局 PosTion :fixed Title .left{float:left; }.right{float:right; }.head{height:58px;background-col ...

  5. python前端学习之js

    01-Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Ja ...

  6. 前端学习(四):body标签(二)

    进击のpython 前端学习--body标签 接着上一节,我们看一下还有没有什么网址 果不其然,在看到新闻类的网址的时候 我们发现还有许多的不一样的东西! 使用ul,添加新闻信息列表 这个样子是什么做 ...

  7. python比前端好学吗_前端学习到底难不难?

    难易程度是相对的,不是绝对的. 前端学习相对于java,python等肯定是更为简单的.精通会有难度,而且更新速度很快,需要不断的充实自己,提升自己,这也是一个难点. 前端学习初期,不知道该怎么学,学 ...

  8. python flask源码解析_用尽洪荒之力学习Flask源码

    [TOC] 一直想做源码阅读这件事,总感觉难度太高时间太少,可望不可见.最近正好时间充裕,决定试试做一下,并记录一下学习心得. 首先说明一下,本文研究的Flask版本是0.12. 首先做个小示例,在p ...

  9. 【前端学习之HTMLCSS进阶篇】-- CSS第一篇 -- @规则与web字体图标

    [前端学习之HTML&CSS进阶篇]- CSS第一篇 - @规则与web字体图标 文章目录 [前端学习之HTML&CSS进阶篇]- CSS第一篇 - @规则与web字体图标 前言 一. ...

最新文章

  1. 第一代狗狗币教父联合社区挽救狗狗币,并在国内布道狗狗币三年之久
  2. Bootstrap系列 -- 34. 按钮下拉菜单
  3. vi 编辑器基本使用
  4. c语言 为参数设置默认值,js函数参数设置默认值
  5. quartus怎么仿真波形_单相半波可控整流电路电阻负载的Matlab Simulink仿真
  6. java8新特性(7)— Base64
  7. Java基础---数组内容详解
  8. 算法高级(41)-推荐算法实现
  9. java import lang_要使用lang包中的类,必须用import语句将java.lang程序包引入到源程序。...
  10. 原因好消息: 自己主动算法设计推箱子游戏(三)
  11. RXJAVA之Subject
  12. 从网上搜集的几种数据分页的总结
  13. Android studio 权限大全
  14. JavaScript数据结构与算法基础学习笔记03----链表与双向链表
  15. ARM、MCU、DSP、FPGA、SOC你知道是什么吗?
  16. HM67主板开启ACHI
  17. 计算机类中文核心期刊
  18. 怎么录屏幕视频?教你学会录制屏幕
  19. 阿里云数据盘扩容和挂载
  20. SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新

热门文章

  1. 系统制成docker镜像_如何让Docker基础镜像变得更小?
  2. c语言linux打印运行时间(耗时) gettimeofday()、timeval、<sys/time.h>
  3. 调试的时候step into,step out,step over有什么区别?各有什么作用?分别在什么情况下使用?
  4. pycharm 运行程序时提示错误信息:ModuleNotFoundError: No module named 'pytest' 解决方法
  5. 使用ONVIF协议控制海康威视球机
  6. docke容器无法访问宿主主机的端口
  7. mysql自增主键到头了怎么办_自增主键用完了怎么办
  8. jqgrid的动态下拉框实现,并解决不能获取值的问题
  9. 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!
  10. android path 合并_Android合并音频文件