Flask【第二章】:Flask中的request

Flask中的request

每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制使不同的。接下来我们一个个来看看,在Flask中的request是怎么玩的。

一、request的各参数

玩之前还是那样需要我们先导入request。

from flask import request

1. request.method

说明:这是获取request的请求方式

演示:这里以登录为例

前端代码:

# 使用get方式发送请求
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="get">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

get方式发送

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"]) #指定允许的请求方式
def login():
    print("method:",request.method)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

后端代码

后端输出:

修改前端代码为post方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

修改前端发送方式为post

在浏览器中输入用户密码后点击登录发送post请求,后端输出如下:

2. request.form

说明:获取存放在Formdata中的数据,以一个类似字典的格式输出。

示例:这里以登录为例

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

使用post发送

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("form:",request.form)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

后端代码

前端输入用户名密码后,后端输出:

form: ImmutableMultiDict([(‘username‘, ‘root‘), (‘pwd‘, ‘123‘)])

3. request.args

说明:获取存放在URL也就是地址栏中的数据。

示例:这里以登录为例

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="get">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

使用get发送

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("args:",request.args)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

打印args

前端输入用户名密码后,后端输出:

args: ImmutableMultiDict([(‘username‘, ‘admin‘), (‘pwd‘, ‘123‘)])

4. request.url

说明:获取访问的完整路径

示例:这里以登录为例

地址栏输入地址:

http://192.168.13.69:5000/login?username=admin&pwd=123

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("url:",request.url)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

获取url完整路径

输入地址后,后端输出:

url: http://192.168.13.69:5000/login?username=admin&pwd=123

5. request.path

说明:获取路由地址

示例:这里以登录为例

地址栏输入地址:

http://192.168.13.69:5000/login?username=admin&pwd=123

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("path:",request.path)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

获取路由地址

输入地址后,后端输出:

path: /login

6. request.host

说明:获取主机地址(包括端口号)

示例:这里以登录为例

地址栏输入地址:

http://192.168.13.69:5000/login?username=admin&pwd=123

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("host:",request.host)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

获取主机地址

输入地址后,后端输出:

host: 192.168.13.69:5000

7. request.values

说明:获取Formdata 和Url中的数据,注意的时,不要使用to_dict,因为会覆盖相同的key。to_dict后面会说。

示例:这里以登录为例

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

发送post请求

地址栏输入地址:

http://192.168.13.69:5000/login?username=admin&pwd=123

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("values:",request.values)
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

获取values值

后端输出:

values: CombinedMultiDict([ImmutableMultiDict([(‘username‘, ‘admin‘), (‘pwd‘, ‘123‘)]), ImmutableMultiDict([(‘username‘, ‘root‘), (‘pwd‘, ‘666‘)])])

8. request.json

说明:如果提交时请求头中的Content-Type:application/json字典操作,那就将其序列化成字典

注意:在做前后端分离时,一定要商议好Content-Type类型。在此不做演示了

9. request.data

说明:如果提交时请求头中的Content-Type无法被识别或者没有此信息,flask会将请求体中的原始数据(就是一堆字节)存放在request.data中。

在此不做演示

10. request.cookies

说明:获取Cookies中的数据

在此不做演示

11. request.headers

说明:获取请求头信息

在此不做演示

12. request.files

说明:序列化文件存储,用来处理删除的文件,使用save来保存上传的文件

演示:上传一个图片到服务器,服务器保存下来。

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="my_file">
    <input type="submit" value="上传">
</form>
</body>
</html>

上传文件

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    if request.method == "GET":
        return render_template("login.html")
    my_file = request.files.get("my_file")
    my_file.save(my_file.filename)
    return "上传成功"

app.run("192.168.13.69","5000",debug=True)

后端代码

注意:在save函数中,必须指定保存的文件名,my_file.filename指的是用原文件名,也可以自定义文件名。

结果显示:

二、关于to_dict参数

根据字面我们可以得知,是将类似字典格式的数据转换成字典格式。所有的类似字典格式的数据都可以通过此参数进行转换。

比如:request.form得到的是一个类似字典格式的数据,我们可以使用request.form.to_dict()将其转换成字典格式:

示例:

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

登录,发送post请求

后端代码:

from flask import Flask,render_template,request
app = Flask(__name__)

@app.route("/login",methods=["GET","POST"])
def login():
    print("form:",request.form.to_dict())
    return render_template("login.html")

app.run("192.168.13.69","5000",debug=True)

将其转换成字典格式

后端输出:

form: {‘username‘: ‘zjk‘, ‘pwd‘: ‘123‘}

原文地址:https://www.cnblogs.com/zhangjunkang/p/10234657.html

时间: 2024-08-30 07:43:21

Flask【第二章】:Flask中的request的相关文章

Flask最强攻略 - 跟DragonFire学Flask - 第二篇 Flask 中的 Render Redirect HttpResponse

1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 2.Flask中的Redirect 每当访问"/redi"这个地址的时候,视图函数redi会触发redirect("/") 跳转到url地址:  "/" 并会触发"/"对应的视图函数index() 3.Flask 中的 render (render_template) HTML模板渲染是每个Web框架中都必

第二章 python中重要的数据结构(下)

二.元组(tuple):不可变序列 跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号. 1 #创建元组 2 >>> 1,2,3 3 (1, 2, 3) 4 >>> t = (1,2,3) 5 >>> t 6 (1, 2, 3) 7 #创建空元组 8 >>> t1 = () 9 >>> t1 10 () 11 #创建只有一个元素的元组,这里注意必须带上逗号 12

第二章. node中的模块和require

一 什么是模块.            JavaScript诞生初,它只不过是一个网页的小脚本而已,没有人会想到它会发展到现在能有大量的库,工具,组件变得如此复杂,慢慢地javascript发展中,人们发现javascript有个先天的缺陷--缺少模块.       在其他语言中,java有类,python有import, php 有include和require甚至比它底层的C也有include.而javascript只能通过 <script>标签引入,这种方式令代码变得杂乱,依赖变得不清晰

数电基础 第二章

数电基础 第二章 逻辑代数中三种基本运算:与.或.非 与:?条件同时具备,结果发生 ?Y=A AND B = A&B=A·B=AB A B Y 0 0 0 0 1 0 1 0 0 1 1 1 或:条件之一具备,结果发生 Y= A OR B = A+B A B Y 0 0 0 0 1 1 1 0 1 1 1 1 非:条件不具备,结果发生 Y=A`=NOT A A Y 0 1 1 0 几种常用的复合逻辑运算 与非: 或非: 与或非: 异或: A B Y 0 0 0 0 1 1 1 0 1 1 1 0

Flask最强攻略 - 跟DragonFire学Flask - 第三篇 Flask 中的 request 之 先知道有这么个东西

每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一段前后端的交互 先写一段儿HTML form表单中提交方式是post  action地址是 /req 写好一个标准 form 表单,一点提交,搜就向后端提交一个POST请求过去了 后端的接收方式就 666 了 首先要从 flask 包中导入 request 模块 , 至于为什么要导入 request

4,Flask 中的 request 之 先知道有这么个东西

每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一段前后端的交互 先写一段儿HTML form表单中提交方式是post  action地址是 /req 写好一个标准 form 表单,一点提交,搜就向后端提交一个POST请求过去了 首先要从 flask 包中导入 request 模块 , 至于为什么要导入 request 呢? 这里不做解释,暂时你就

第三篇 Flask 中的 request

每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一段前后端的交互 先写一段儿HTML form表单中提交方式是post  action地址是 /req 写好一个标准 form 表单,一点提交,搜就向后端提交一个POST请求过去了 后端的接收方式就 666 了 首先要从 flask 包中导入 request 模块 , 至于为什么要导入 request

Flask第三篇 Flask中的request

每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一段前后端的交互 先写一段儿HTML form表单中提交方式是post  action地址是 /req 写好一个标准 form 表单,一点提交,搜就向后端提交一个POST请求过去了 后端的接收方式就 666 了 首先要从 flask 包中导入 request 模块 , 至于为什么要导入 request

Flask中的request与response

Flask中的request from flask import Flask,request app = Flask(__name__) @app.route("/",methods=["POST","GET"]) def index(): # 请求相关的信息 print("请求方法",request.method)#请求方法 print("get请求的参数",request.args)# get请求的参数