【Flask】request请求

在Flask中,可以定义路由默认的请求方式:
利用methods参数可以自己指定一个接口的请求方式

一、get请求

get方式:把请求参数放到为url的?后面,每个请求参数格式为:参数名=参数值。参数之间采用&符号隔开。采用的字符数据传输,所以也叫明文的请求
post: 表单提交,并且采用字节流的方式传递数据

案例:

模板中的html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试请求方式和请求参数</title>
    <style>
        .parent{
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="parent">
        <h2>请求方式</h2>
        <a href="/test1?user_id=100&name=zhilong">get请求</a>
        <h5>post请求</h5>
        <form action="/test2" method="post" enctype="multipart/form-data">
            姓名:<input type="text" name="user_name"> 
            年领:<input type="text" name="user_age"> 
            上传:<input type="file" name="image" >
            <input type="submit">
        </form>

    </div>

</body>
</html>

注意
@app.route('/test1',methods=['GET']):表示只接收get请求
@app.route('/test2',methods=['POST']):表示接收post请求

@app.route('/test2',methods=['POST','GET']):表示接收get和post请求
如果想要获取其他地方传递的参数,可以通过Flask提供的request对象来读取。
例如:
前端html中的请求地址为:
href="/test1?user_id=100&name=zhilong"
后端获取user_id和name的值为:
request.args.get('user_id')
request.args.get("name")
不同位置的参数都存放在request的不同属性中

【Flask】request请求

视图函数:

from flask import Flask,request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/test1',methods=['GET'])
def test1():
    user_id=request.args.get('user_id')
    print('用户id是:{}'.format(user_id))
    name=request.args.get("name")
    print('用户名字是:{}'.format(name))
    return "请求成功"

if __name__ == '__main__':

    app.run(host='0.0.0.0',port=8080,debug=True)

访问静态资源:
http://192.168.112.217:8080/static/test1.html

【Flask】request请求
点击get请求,进入指定的页面,后端视图函数返回”请求成功”
【Flask】request请求

二、post请求

后端想要获取到表单中传入的值用request方法下的form方法
例如:
request.form.get('user_name')
request.form.get('user_age')

特别注意:表单请求的url和后端视图中的url要保持一致
后端视图

from flask import Flask,request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

'''该函数处理post请求'''
@app.route('/test2',methods=['POST'])
def test2():
    name=request.form.get('user_name')
    age=request.form.get('user_age')
    print("name的值是:{},类型是:{}".format(name,type(name)))
    print("age的值是:{},类型是:{}".format(age, type(age)))

if __name__ == '__main__':

    app.run(host='0.0.0.0',port=8080,debug=True)

访问静态页面

【Flask】request请求
表单中填写数据,提交
后端视图返回”post请求成功”
【Flask】request请求
控制台打印结果为:
【Flask】request请求

三、文件上传

客户端上传文件到服务器,并保存到服务器中
后端想要获取上传的参数:用 request.files['image']
f.save('./static/demo.jpg') :表示后端获取到客户端上传的文件后保存到 /static/demo.jpg 这里
视图为:

from flask import Flask,request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

'''该函数处理post请求'''
@app.route('/test2',methods=['POST'])
def test2():
    name=request.form.get('user_name')
    age=request.form.get('user_age')
    print("name的值是:{},类型是:{}".format(name,type(name)))
    print("age的值是:{},类型是:{}".format(age, type(age)))

    f=request.files['image']
    f.save('./static/demo.jpg')
    return "post请求成功"

if __name__ == '__main__':

    app.run(host='0.0.0.0',port=8080,debug=True)

注意:

文件上传的,注意:需要在表单中添加属性enctype=”multiple/form-data”
把文件的字节变成连续不间断的字节流,有统一的报头和包流

【Flask】request请求

Original: https://blog.csdn.net/YZL40514131/article/details/122733844
Author: 敲代码敲到头发茂密
Title: 【Flask】request请求

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/746593/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球