python前端学习-----Flask进阶
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
数据进行加密存储。
设置密钥的方法
app.secret_key = '密钥’
,密钥有自己写为字符串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进阶相关推荐
- python前端学习-------Flask框架基础(建议收藏)
Flask框架基础 下载并安装Flask框架 Flask基础 第一个Flask应用 开启调试模式 路由 变量规则 构造URL HTTP方法 模板 语法格式 模板变量 控制结构 条件控制语句 `if` ...
- python资料百度云-Java+Python+前端 学习资料大全 百度云盘
Java架构师3大阶段 链接:https://pan.baidu.com/s/1DlXh33y5t4cZUmZH0cLvCw 提取码:5s76 2019前端架构阶段 链接:https://pan.ba ...
- python前端学习之css
01-css的引入方式 在HTML中引入css方式总共有三种: 行内样式 内接样式 外接样式 3.1 链接式 3.1 导入式 css介绍 现在的互联网前端分三层: HTML:超文本标记语言.从语义的角 ...
- python 前端学习_python学习之路7 前端学习3
1.页面布局 PosTion :fixed Title .left{float:left; }.right{float:right; }.head{height:58px;background-col ...
- python前端学习之js
01-Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Ja ...
- 前端学习(四):body标签(二)
进击のpython 前端学习--body标签 接着上一节,我们看一下还有没有什么网址 果不其然,在看到新闻类的网址的时候 我们发现还有许多的不一样的东西! 使用ul,添加新闻信息列表 这个样子是什么做 ...
- python比前端好学吗_前端学习到底难不难?
难易程度是相对的,不是绝对的. 前端学习相对于java,python等肯定是更为简单的.精通会有难度,而且更新速度很快,需要不断的充实自己,提升自己,这也是一个难点. 前端学习初期,不知道该怎么学,学 ...
- python flask源码解析_用尽洪荒之力学习Flask源码
[TOC] 一直想做源码阅读这件事,总感觉难度太高时间太少,可望不可见.最近正好时间充裕,决定试试做一下,并记录一下学习心得. 首先说明一下,本文研究的Flask版本是0.12. 首先做个小示例,在p ...
- 【前端学习之HTMLCSS进阶篇】-- CSS第一篇 -- @规则与web字体图标
[前端学习之HTML&CSS进阶篇]- CSS第一篇 - @规则与web字体图标 文章目录 [前端学习之HTML&CSS进阶篇]- CSS第一篇 - @规则与web字体图标 前言 一. ...
最新文章
- 第一代狗狗币教父联合社区挽救狗狗币,并在国内布道狗狗币三年之久
- Bootstrap系列 -- 34. 按钮下拉菜单
- vi 编辑器基本使用
- c语言 为参数设置默认值,js函数参数设置默认值
- quartus怎么仿真波形_单相半波可控整流电路电阻负载的Matlab Simulink仿真
- java8新特性(7)— Base64
- Java基础---数组内容详解
- 算法高级(41)-推荐算法实现
- java import lang_要使用lang包中的类,必须用import语句将java.lang程序包引入到源程序。...
- 原因好消息: 自己主动算法设计推箱子游戏(三)
- RXJAVA之Subject
- 从网上搜集的几种数据分页的总结
- Android studio 权限大全
- JavaScript数据结构与算法基础学习笔记03----链表与双向链表
- ARM、MCU、DSP、FPGA、SOC你知道是什么吗?
- HM67主板开启ACHI
- 计算机类中文核心期刊
- 怎么录屏幕视频?教你学会录制屏幕
- 阿里云数据盘扩容和挂载
- SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新
热门文章
- 系统制成docker镜像_如何让Docker基础镜像变得更小?
- c语言linux打印运行时间(耗时) gettimeofday()、timeval、<sys/time.h>
- 调试的时候step into,step out,step over有什么区别?各有什么作用?分别在什么情况下使用?
- pycharm 运行程序时提示错误信息:ModuleNotFoundError: No module named 'pytest' 解决方法
- 使用ONVIF协议控制海康威视球机
- docke容器无法访问宿主主机的端口
- mysql自增主键到头了怎么办_自增主键用完了怎么办
- jqgrid的动态下拉框实现,并解决不能获取值的问题
- 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!
- android path 合并_Android合并音频文件