Flask的request

文章介绍了Flask框架中处理HTTP请求的方法,包括使用Request对象访问form数据、查询字符串args以及cookies。同时,详细阐述了如何设置、获取和删除cookies,以及如何实现文件上传功能,包括文件的临时保存和安全文件名的生成。
摘要由CSDN通过智能技术生成

28.10 必知的Flask的request Flask Request对象
来⾃客户端⽹⻚的数据作为全局请求对象发送到服务器。为了处理请求数据,应该从Flask模块导 ⼊。
Request对象的重要属性如下所列:
form - 它是⼀个字典对象,包含表单参数及其值的键和值对。
args - 解析查询字符串的内容,它是问号(?)之后的URL的⼀部分。
Cookies - 保存Cookie名称和值的字典对象。
files - 与上传⽂件有关的数据。
method - 当前请求⽅法
使⽤request也⽐较简单,就是直接从从 flask 模块导⼊请求对象:
from flask import request

"""args - 解析查询字符串的内容,它是问号(?)之后的URL的⼀部分。"""
@app.route('/login', methods=['POST', 'GET'])
 def login():
      if request.method == 'POST':
      		user = request.form['nm']
      		return redirect(url_for('do_welocome',name = user))
       else:
       user = request.args.get("nm")
       return redirect(url_for('do_welocome',name = user))

28.12 必知的Flask的Cookies获取数据 Cookie以⽂本⽂件的形式存储在客户端的计算机上。
其⽬的是记住和跟踪与客户使⽤相关的数据,以获得更好的访问者体验和⽹站统计信息。
Flask的Request对象包含Cookie的属性。
它是所有cookie变量及其对应值的字典对象

除此之外,cookie还存储其⽹站的到期时间,路径和域名。
在Flask中,对cookie的处理步骤为:
1 设置cookie:
设置cookie,默认有效期是临时cookie,浏览器关闭就失效
可以通过 max_age 设置有效期, 单位是秒
2 获取cookie
获取cookie,通过request.cookies的⽅式, 返回的是⼀个字典,可以获取字典⾥的相应的值
3 删除cookie
这⾥的删除只是让cookie过期,并不是直接删除cookie
删除cookie,通过delete_cookie()的⽅式, ⾥⾯是cookie的名字

from flask import  Flask,request,render_template,make_response
app = Flask(__name__)
@app.route('/setcookies')
def set_cookie():
    rep = make_response('设置cookies成功cookie:zhen guo:33')
    rep.set_cookie("zhen guo", '33',max_age = 3600)
    return rep
@app.route('/getcookie')
def get_cookie():
    cookie_value = request.cookies.get('zhen guo')
    return cookie_value
@app.route('/del_cookie')
def del_cookie():
    rep = make_response('删除cookie成功')
    rep.delete_cookie('zhen guo')
    return rep
if __name__ == "__main__":
    app.debug = True
    app.run('127.0.0.1',5000)


28.13 Flask ⽂件上传 在 Flask 中处理⽂件上传⾮常简单。
只需要⼀个 HTML 表单,其enctype属性设置为’multipart/form-data’,将⽂件发布到 URL。
URL 处理程序从request.files[]对象中提取⽂件,并将其保存到所需的位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:5000/uploader" method="POST" enctype="multipart/form-data">
<p><input type="file" name="file1" accept=".jpg,.png,.xlsx,.xls"/></p>
<p><input type="submit"/></p> </form>

</body>
</html> 

每个上传的⽂件⾸先会保存在服务器上的临时位置
然后将其实际保存到它的Y终位置。
⽬标⽂件的名称可以是硬编码的
也可以从 request.files[file]对象的filename属性中获取。
但是,建议使⽤secure_filename()函数获取它的安全版本
Flask对象的配置设置中定义默认上传⽂件夹的路径和上传⽂件的Y⼤值
app.config[‘UPLOAD_FOLDERʼ] 定义上传⽂件夹的路径
app.config[‘MAX_CONTENT_LENGTHʼ] 指定要上传的⽂件的Y⼤值(以字节为单位

from flask import  Flask,request,render_template,make_response
from werkzeug.utils import secure_filename
import os
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = r'D:\pythonProject1\static'
@app.route('/')
def index():
    return render_template('upload.html')
@app.route('/uploader',methods=['POST','GET'])
def upload():
    if request.method == "POST":
        f = request.files['file1']
        filename = secure_filename(f.filename)
        f.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
        return f'文件{filename}上传成功'
if __name__ == "__main__":
    app.debug = True
    app.run('127.0.0.1', 5000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值