Flask-请求和响应
1、Get请求
request.args
类型是 不可变字典,可以选择to_dict() 转化成普通的可变字典
2、Post请求
request.form
3、Json数据
request.json
通过ajax发送post请求
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><title>Title</title>
</head>
<body><form action="/uploads" method="post" enctype="multipart/form-data"><input type="file" name="pic"><input type="submit"></form><button onclick="send_ajax()">点击发送</button><script>function send_ajax() {$.ajax({url:'http://127.0.0.1:5000/send',data:JSON.stringify({username:"tudou"}),dataType:'json',type:'POST',contentType:'application/json',success:function(data){alert('成功')}})}</script>
</body>
</html>
python
from flask import Flask, request, render_templateapp = Flask(__name__)@app.route('/send', methods=['GET', 'POST'])
def send():if request.method == 'GET':return render_template('index.html')elif request.method == 'POST':a = requestprint(request.json)print(request.form)print(request.content_type)print(request.environ)return "成功"if __name__ == '__main__':app.run(debug=True)
上传图片:
上传文件格式,单独写方法校验后缀,上传图片大小,Flask自带限制方法,在app.config里设置。Flask有现成的一个第三方插件可以解决上传
from flask import Flask, request, render_templateapp = Flask(__name__)
# 限制上传文件的大小
app.config['MAX_CONTENT_LENGTH'] = 1024 * 1024@app.route('/send', methods=['GET', 'POST'])
def send():if request.method == 'GET':return render_template('index.html')elif request.method == 'POST':a = requestprint(request.json)print(request.form)print(request.content_type)print(request.environ)return "成功"def allow_format(filename):file_list = ['jpg', 'png']format_file = filename.split('.')[1]if format_file in file_list:return Truereturn False@app.route('/upload', methods=['GET', 'POST'])
def upload():a = requestfile = request.files.get('photo')if file is None:return render_template('index.html')# 限制文件的类型if allow_format(file.filename):file.save(secure_filename(file.filename))return 'save success'return 'error'if __name__ == '__main__':app.run(debug=True)
Flask读取图片,第一个入参是路径,第二个入参是文件名
http://127.0.0.1:5000/upload/360wallpaper.jpg
@app.route('/upload/<filename>')
def get_upload(filename):return send_from_directory(os.getcwd(), filename)
响应json格式
三种写法
1、json.dumps({"username": "test"}), {"context-type": "applicatin/json"}
2、r = make_response({"username":"test"}, {"context-type": "application/json"})
3、return r
r = jsonify({"username": "test"})
import jsonfrom flask import Flask, make_response, jsonifyapp = Flask('__name__')@app.route('/')
def index():# return json.dumps({"username": "test"}), {"context-type": "applicatin/json"}# r = make_response({"username":"test"}, {"context-type": "application/json"})# return rr = jsonify({"username": "test"})return rif __name__ == '__main__':app.run(debug=True)
重定向
使用redirect(url_for('login', project_id='3')),定义多个参数的时候就往后写
重定向到login上的时候后面会自动带上这个project_id=3这个参数
from flask import Flask, request, url_for
from werkzeug.utils import redirectapp = Flask('__name__')@app.route('/')
def index():if request.args.get('username') is None:return redirect(url_for('login', project_id='3', username='test'))return 'hello'@app.route('/login')
def login():return 'login'if __name__ == '__main__':app.run(debug=True)
错误响应,对不可预知的错误,定义一个全局的错误处理,debug=True,显示错误信息,改成False后,显示的是500 服务不可用,用errorhandler做为装饰器,拦截所有错误,# 定义一个全局的错误处理
from flask import Flask, request, url_for, render_template
from werkzeug.utils import redirectapp = Flask('__name__')@app.route('/error')
def error():1/0return 'error'# 定义一个全局的错误处理@app.errorhandler(500)
def server_error(error):return render_template('error_500.html')if __name__ == '__main__':app.run(debug=False)
对于一个可以预知的错误,有一个规则是一个函数一般有一个return,然后可以用raise ,但是一般还是用return,但是要确保,return的类型是一致的
Flask-请求和响应相关推荐
- 应用服务器与WSGI协议以及flask后端框架总结(后端接收请求返回响应的整个流程)...
上次遗留了两个问题,先说一下自己的看法 问题: 1.明明一个线程只能处理一个请求,那么栈里的元素永远是在栈顶,那为什么需要用栈这个结构?用普通变量不行吗. 2._request_ctx_stack和_ ...
- Flask框架 请求与响应 模板语法
目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...
- python sanic 向别的服务器发送post请求_Sanic框架请求与响应实例分析
本文实例讲述了Sanic框架请求与响应.分享给大家供大家参考,具体如下: 前面介绍了Sanic框架的路由,这里接着介绍Sanic框架的请求与响应. 简介 Sanic是一个类似Flask的Python ...
- 对预检请求的响应未通过访问控制检查
本文翻译自:Response to preflight request doesn't pass access control check I'm getting this error using n ...
- 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作
Django 框架是一个基于 python 的重量级的 web 开发框架,现今很多大公司大项目都是使用 Django 框架.采用了 MVC(model view controller) 的框架模式,p ...
- 自动加解密请求包响应包插件(autoDecoder)
之前所立的一个flag:明文传,明文响应:密文传,密文响应 0x01 背景 当数据包里都是密文,我们无从下手:就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要 ...
- 【Gunicorn】gunicorn + flask 请求流程 及 高并发处理介绍
1.gunicorn + flask 处理高并发请求介绍 一,独角兽Gunicorn 服务器作为wsgi app的容器, 采用 pre-fork 模型中有一个管理进程以及几个的工作进程.master ...
- HTTP/HTTPS的请求和响应
HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer ...
- NETGEAR拒绝连接请求_3分钟理解HTTP的请求与响应
HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer ...
- 优雅地记录http请求和响应的数据
点击关注公众号,Java干货及时送达 来源:https://fredal.xin/http-body-recorder 经常会遇到需要处理 http 请求以及响应 body 的场景. 而这里比较大的一 ...
最新文章
- 重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单...
- java课程设计图片浏览器_java课程设计图片浏览器
- 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
- Upma Xmac 测试 03
- 大并发服务器架构 大型网站架构演变
- 对抗训练浅谈:意义、方法和思考(附Keras实现)
- java ews_Java---使用EWS 写个ExchangeMailUtil
- 学习dubbo(四): 启动时检查
- 数据库周刊55丨2021年1月数据库排行榜出炉;openGauss荣获“2020年度国产数据库”称号;易鲸捷喜获“金鼎奖”;搭建Mysql MGR高可用集群;openGauss主备部署;AWR分析办法
- Unity3D好用Unity模型场景素材和Unity资源大合集
- Android NDK开发基础
- 数据结构零基础入门(初学者也能看懂):队列使用场景之无锁技术
- [ABAP]批量查询工艺路线
- JPEG转换成TIFF
- 音频-WAV数据格式
- MapReduce剥洋葱
- python web py入门-1-web.py简介和安装
- word文档插图片后与文字距离很大怎么办
- 最新最全的 Android 开源项目合集
- 70行代码撸一个桌面自动翻译神器
热门文章
- CentOS下安装docker和配置镜像加速器
- Android 热修复核心原理
- 下载百度云的正确姿势---油猴插件
- 用matlab移动平均法,简单移动平均法_matlab的简单移动平均法 下面的代码有什么问题啊,......
- java中的IO、NIO、Okio
- 51 个基本的机器学习面试问题和答案
- Android使用高德和风天气Sdk获取定位实况天气数据(二)
- 多人过河问题C语言贪心算法,南阳oj贪心算法之过河问题
- CAS 5.3自定义 登录
- 牛客网剑指Offer C++题解