Python中如何实现Flask请求数据获取响应
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章给大家分享的是有关Python中如何实现Flask请求数据获取响应的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一,请求数据及其获取1.1请求相关数据#请求参数 客
千家信息网最后更新 2025年11月06日Python中如何实现Flask请求数据获取响应
这篇文章给大家分享的是有关Python中如何实现Flask请求数据获取响应的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一,请求数据及其获取
1.1请求相关数据
#请求参数 客户端的请求参数一般存在于三个地方 1,请求体 2,请求头 3,URL参数 1).国定参数 2).查询字符串 #请求参数的携带参数下表:
| 序号 | 参数或信息 | 解释 |
| 1 | 固定参数 | URL的组成部分,不可缺失 |
| 2 | 查询字符串:args | 根据需求,可有可无 |
| 3 | 表单数据 | 提交form表单是传递的数据 |
| 4 | 文件上传:files | 用户向服务器上传的文件 |
| 5 | 请求头:headers | 请求头中携带的请求信息 |
| 6 | 请求方法:method | 请求所使用的请求方法 |
| 7 | URL地址:url | 请求的URL地址 |
1.2固定参数与转换器
#内容提要1.固定参数2.固定参数的获取3.转换器4.自定义转换器
#1,固定参数固定参数是指在URL中固定的,是不可获取的一部分,区别与查询字符串,查询字符串是可有可无的固定参数: /article/1:如果1作为文章的id,则是不可获取的一部分 /art/1?title="装饰器":title跟在?后面,是查询字符串
#2.请求参数的获取#(1).语法形式:@app.route('/users/')def user_info(user_id): return '获取到的userid为:{}'.format(user_id)#(2).语法解释:在路由中使用来接收固定参数,且不要忘记传递视图,即视图必须定义形参user_id.注意: - 路由中的user_id前可以限制类型,写法参考:,限定了类型,前端传来的固定参数就必须符合类型要求,否则报错;如果不限定类型,默认接收到为字符串类型 - 视图必须定义形参,且形参的名字必须与路由中一直,即路由中写user_id,视图函数形参也必须是user_id #3.转换器上面的固定参数是使用转换器实现的,flask自带的转换器共有六个: - UnicodeConverter:字符串转换器 - AnyConverter:匹配any中任意路径,写法:'/users/' - PathConverter:路径转换器,与字符串转换器相似,但参数中可以包含"/" - IntergerConverter:整形转换器 - FloatConverter:浮点型转换器 - UUIDConverter:UUID唯一标识码转换器
#4.自定义转换器如果flask内置转换器无法满足特定需求,可以自定义转换器,自定义转换器可以参与源码的实现#(1).自定义转换器步骤- 自定义转换器类:继承自BaseConverter,内部指定正则匹配规则- 自定义转换器类添加至转换器容器指定- 使用自定义转换器#(2).自定义转换器实例#导入BaseConverterfrom werkzaug.routing import BaseConverter#自定义Converter类calss phoneConverter(BaseConverter): regex = r'1[3-9]\d{9}'#添加至Converter容器app.url_map.converters['phone'] = phoneConverter#(3).使用自定义转换器@app.route('/user/')def user_info(user_id): return user_id 1.3查询参数获取
#args:查询参数#(1).查询参数查询参数在URL中以?与主路由进行分隔,查询参数是以键值对形式出现的,键与值使用"="连接,如下所示:/user/?userid=333 #(2).查询参数的获取request.args.get('key')request.args['key'] #(3).示例:from flask import Flaskfrom flask import request app = Flask(__name__) @app.route('/')def user_info(): #通过['key']形式获取查询参数中的user_id user_id_1 = request.args['userid'] #通过get方法获取查询中的user_id user_id_2 = request.args.get('userid') return 'user_id_1:{},user_id_2:{}'.format(user_id_1,user_id_2) #访问路由: http://127.0.0.1:5000/?userid=333, 即可在页面上看到结果1.4表单数据获取
# form: 表单数据#(1).表单数据form表单数据,一般应用于登录,注册,信息提交等.配合前端form表单使用,一般form表单都是post请求,注意路由中指定POST请求方法,将表单数据封装在请求体中 #(2).表单数据获取方式request.form.get('key')#(3).示例from flask import Flaskfrom flask import request app = Flask(__name__) @app.route('/',methods=['post])def login(): #获取form表单中的用户名 username = request.form.get('uname') #获取form表单中的密码 password = request.form.get('pwd') # 用户名与密码的判断 if username == 'admin' and password == 'admin123': return '登录成功' else: return '登录失败'if __name__ == '__main__': app.run()# postman访问http://127.0.0.1:5000/, 并指定form-data为{'uname': 'admin', 'pwd': 'admin123'}1.5文件上传
# files: 文件数据# (1).文件对象的获取file_obj = request.files.get('key') # (2).文件对象的属性file_obj.filename: 上传文件的文件名file_obj.name: 上传文件指定的keyfile_obj.save('path'): 文件对象保存方法 # 示例:from flask import Flaskfrom flask import request # 创建Flask实例对象app = Flask(__name__) @app.route('/upload', methods=['POST'])def upload_file(): # 获取前端传递过来的文件对象 img = request.files.get('pic') # 获取文件对象的文件名 file_name = img.filename # 保存文件对象 img.save(file_name) return '上传成功!' if __name__ == '__main__': app.run()1.6其他请求参数
# 其他参数: - headers: 记录请求头中的报文头 - method: 记录请求使用的HTTP请求方法 - url: 记录请求的URL地址 # 示例:from flask import Flaskfrom flask import request # 创建Flask实例对象app = Flask(__name__) @app.route('/')def index(): # 打印请求头信息 print(request.headers) print('-'*50) # 打印请求方法 print(request.method) print('-'*50) # 打印请求的URL print(request.url) return 'other args' if __name__ == '__main__': app.run()二,响应数据之新书三件套
2.1字符串响应形式
# 字符串直接使用return关键字返回一个字符串: return 'hello flask'
2.2模板响应格式
# 模板的返回- 建立templates文件夹(在pycharm中Mark Directory as Template Folder, pycharm中还需要设置模板引擎为jinjia2) - 在template中建立要返回的HTML页面- 视图中使用render_template('HTML文件名')返回模板 # 示例:from flask import Flaskfrom flask import render_template app = Flask(__name__) @app.route('/')def index(): # render_template()返回模板 return render_template('index.html') if __name__ == '__main__': app.run()拓展一些jinjia2模板引擎:
Jinjia2模板 和我们django 内置模板语法 基本一致, 我们简单了解
我们在 视图中 定义好 变量数据
@app.route("/", methods=["GET", "POST"])def hello_world(): new_list = ["新闻1", "新闻2", "新闻3", "新闻4"] return render_template("home.html", news={"news_list": new_list, "title": "我是新标题"})在 模板中使用 定义好的变量数据
{{变量名}} 会展示变量的值
{% for 语句 %} 循环体 {% endfor %}
{{ news.title }}
《功勋-李延年》
{% for item in news.news_list %}{{ item }}
{% endfor %}
2.3重定向响应形式
# 重定向:重定向是跳转至一个新的路由, 使用redirect # 重定向形式:- 直接重定向一个外链- 重定向一个内部链接 # 重定向外链示例:from flask import Flaskfrom flask import redirect app = Flask(__name__) @app.route('/')def index(): # 访问/根路由, 直接跳转至百度首页 return redirect('http://www.baidu.com/') if __name__ == '__main__': app.run() # 重定向至内部连接from flask import Flaskfrom flask import redirectfrom flask import url_for app = Flask(__name__) @app.route('/')def start(): # 使用url_for跳转至内部链接, url_for()中指定某个路由的endpoint值 return redirect(url_for('idx')) # redirect直接跳转, 内部传入指定的路由 # return redirect('/index') @app.route('/index', endpoint='idx')def index(): return 'index页面' if __name__ == '__main__': app.run(debug=True)三,响应json数据与元组数据
3.1json数据响应
# 返回json数据返回json数据需要借助flask提供的jsonify来实现 # 实例如下:from flask import Flaskfrom flask import jsonify app = Flask(__name__) @app.route('/index', endpoint='idx')def index(): # 字典形式数据 data = { 'name': 'jeremy', 'age': 18 } # 返回json数据 return jsonify(data)# 看一下源码 if __name__ == '__main__': app.run(debug=True)3.2元组数据响应
# 元组形式可以返回一个元组,这样的元组必须是 (response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。 # 示例如下:from flask import Flaskfrom flask import jsonify app = Flask(__name__) @app.route('/index', endpoint='idx')def index(): # return ('要返回的字符串', 6969是状态码, {'author': 'jeremy'}字典是设置在响应头中的键值对信息) return ('要返回的字符串', 6969, {'author': 'jeremy'}) if __name__ == '__main__': app.run(debug=True)四,make_response()自定义响应
# 重定向:重定向是跳转至一个新的路由, 使用redirect # 重定向形式:- 直接重定向一个外链- 重定向一个内部链接 # 重定向外链示例:from flask import Flaskfrom flask import redirect app = Flask(__name__) @app.route('/')def index(): # 访问/根路由, 直接跳转至百度首页 return redirect('http://www.baidu.com/') if __name__ == '__main__': app.run() # 重定向至内部连接from flask import Flaskfrom flask import redirectfrom flask import url_for app = Flask(__name__) @app.route('/')def start(): # 使用url_for跳转至内部链接, url_for()中指定某个路由的endpoint值 return redirect(url_for('idx')) # redirect直接跳转, 内部传入指定的路由 # return redirect('/index') @app.route('/index', endpoint='idx')def index(): return 'index页面' if __name__ == '__main__': app.run(debug=True)感谢各位的阅读!关于"Python中如何实现Flask请求数据获取响应"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
参数
数据
转换器
文件
路由
字符
字符串
查询
表单
形式
模板
对象
示例
方法
视图
信息
类型
变量
实例
新闻
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库设计完整约束
沈阳眼医互联网科技
计算机网络技术文凭
四川最好的软件开发
开发区软件开发收费
网络安全产品接口
软件开发有什么好的学校
运营商保存数据库多久
最常用的一个小型数据库管理系统
腾讯佰万网络技术
南京正泰网络技术有限公司
惠普服务器380p怎么做系统
网页开发关联数据库是什么意思
黑龙江运营软件开发中心
软件开发生产环境
消费机如何连接读取数据库
国家网络安全什么意思
勇士软件开发俱乐部
云服务器断网运行软件
从事数据挖掘和数据库管理
电脑技术学院里的软件开发
四川最好的软件开发
手游服务器在电脑上怎么下载
东营app软件开发
网络安全法》第四十七条
数据库能存数组嘛
不同数据库间数据复制粘贴
数据库视图开好了怎么测试
网关的数据怎么储存在数据库
由格式化的数据库怎么恢复