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-请求和响应相关推荐

  1. 应用服务器与WSGI协议以及flask后端框架总结(后端接收请求返回响应的整个流程)...

    上次遗留了两个问题,先说一下自己的看法 问题: 1.明明一个线程只能处理一个请求,那么栈里的元素永远是在栈顶,那为什么需要用栈这个结构?用普通变量不行吗. 2._request_ctx_stack和_ ...

  2. Flask框架 请求与响应 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  3. python sanic 向别的服务器发送post请求_Sanic框架请求与响应实例分析

    本文实例讲述了Sanic框架请求与响应.分享给大家供大家参考,具体如下: 前面介绍了Sanic框架的路由,这里接着介绍Sanic框架的请求与响应. 简介 Sanic是一个类似Flask的Python ...

  4. 对预检请求的响应未通过访问控制检查

    本文翻译自:Response to preflight request doesn't pass access control check I'm getting this error using n ...

  5. 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作

    Django 框架是一个基于 python 的重量级的 web 开发框架,现今很多大公司大项目都是使用 Django 框架.采用了 MVC(model view controller) 的框架模式,p ...

  6. 自动加解密请求包响应包插件(autoDecoder)

    之前所立的一个flag:明文传,明文响应:密文传,密文响应 0x01 背景 当数据包里都是密文,我们无从下手:就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要 ...

  7. 【Gunicorn】gunicorn + flask 请求流程 及 高并发处理介绍

    1.gunicorn + flask 处理高并发请求介绍 一,独角兽Gunicorn 服务器作为wsgi app的容器, 采用 pre-fork 模型中有一个管理进程以及几个的工作进程.master ...

  8. HTTP/HTTPS的请求和响应

    HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer ...

  9. NETGEAR拒绝连接请求_3分钟理解HTTP的请求与响应

    HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer ...

  10. 优雅地记录http请求和响应的数据

    点击关注公众号,Java干货及时送达 来源:https://fredal.xin/http-body-recorder 经常会遇到需要处理 http 请求以及响应 body 的场景. 而这里比较大的一 ...

最新文章

  1. 重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单...
  2. java课程设计图片浏览器_java课程设计图片浏览器
  3. 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
  4. Upma Xmac 测试 03
  5. 大并发服务器架构 大型网站架构演变
  6. 对抗训练浅谈:意义、方法和思考(附Keras实现)
  7. java ews_Java---使用EWS 写个ExchangeMailUtil
  8. 学习dubbo(四): 启动时检查
  9. 数据库周刊55丨2021年1月数据库排行榜出炉;openGauss荣获“2020年度国产数据库”称号;易鲸捷喜获“金鼎奖”;搭建Mysql MGR高可用集群;openGauss主备部署;AWR分析办法
  10. Unity3D好用Unity模型场景素材和Unity资源大合集
  11. Android NDK开发基础
  12. 数据结构零基础入门(初学者也能看懂):队列使用场景之无锁技术
  13. [ABAP]批量查询工艺路线
  14. JPEG转换成TIFF
  15. 音频-WAV数据格式
  16. MapReduce剥洋葱
  17. python web py入门-1-web.py简介和安装
  18. word文档插图片后与文字距离很大怎么办
  19. 最新最全的 Android 开源项目合集
  20. 70行代码撸一个桌面自动翻译神器

热门文章

  1. CentOS下安装docker和配置镜像加速器
  2. Android 热修复核心原理
  3. 下载百度云的正确姿势---油猴插件
  4. 用matlab移动平均法,简单移动平均法_matlab的简单移动平均法 下面的代码有什么问题啊,......
  5. java中的IO、NIO、Okio
  6. 51 个基本的机器学习面试问题和答案
  7. Android使用高德和风天气Sdk获取定位实况天气数据(二)
  8. 多人过河问题C语言贪心算法,南阳oj贪心算法之过河问题
  9. CAS 5.3自定义 登录
  10. 牛客网剑指Offer C++题解