flask 获取请求数据和响应,及文件上传
1.获取请求数据及响应
- request - request.form #接收POST或者PUT请求的数据 - request.args #GET请求的数据,不是完全意义上的字典,通过.to_dict可以转换成字典 - request.querystring #GET请求,bytes形式的 - response - return render_tempalte() - return redirect() - return "" v = make_response(返回值) #可以把返回的值包在了这个函数里面,然后再通过.set_cookie绑定cookie等 - session - 存在浏览器上,并且是加密的 - 依赖于:secret_key
2.flask中获取URL后面的参数(from urllib.parse import urlencode,quote,unquote)
GET请求:
URL为: http://127.0.0.1:5000/login?name=%27%E8%83%A1%E5%86%B2%27&nid=2
from urllib.parse import urlencode,quote,unquote def login(): if request.method == 'GET': s1 = request.args s2 = request.args.to_dict() s3 = urlencode(s1) s4 = urlencode(s2) s5 = unquote(s3) s6 = unquote(s4) s7 = quote("胡冲") print('s1',s1) print('s2',s2) print('s3',s3) print('s4',s4) print('s5',s5) print('s6',s6) print('s7',s7) return render_template('login.html') #############结果如下#################### s1 ImmutableMultiDict([('name', "'胡冲'"), ('nid', '2')]) s2 {'name': "'胡冲'", 'nid': '2'} s3 name=%27%E8%83%A1%E5%86%B2%27&nid=2 s4 name=%27%E8%83%A1%E5%86%B2%27&nid=2 s5 name='胡冲'&nid=2 s6 name='胡冲'&nid=2 s7 %E8%83%A1%E5%86%B2
3.文件上传
用 Flask 处理文件上传很容易,只要确保不要忘记在您的 HTML 表单中设置 enctype="multipart/form-data"
属性就可以了。否则浏览器将不会传送您的文件。
已上传的文件被储存在内存或文件系统的临时位置。您可以通过请求对象 files
属性来访问上传的文件。每个上传的文件都储存在这个 字典型属性中。这个属性基本
和标准 Python file
对象一样,另外多出一个 用于把上传文件保存到服务器的文件系统中的 save()
方法。下例展示其如何运作:
from flask import request @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': f = request.files['the_file'] f.save('/var/www/uploads/uploaded_file.txt') ...
如果想要知道文件上传之前其在客户端系统中的名称,可以使用 filename
属性。但是请牢记这个值是 可以伪造的,永远不要信任这个值。如果想要把客户端的文件名作为服务器上的文件名, 可以通过 Werkzeug 提供的 secure_filename()
函数:
from werkzeug.utils import secure_filename @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': file = request.files['the_file'] file.save(f"/var/www/uploads/{secure_filename(file.filename)}") ...
文件上传详情链接:
https://dormousehole.readthedocs.io/en/latest/patterns/fileuploads.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)