软硬件环境
Windows 10 64bit
Anaconda3 with python 3.7
PyCharm 2019.3
Flask 1.1.1
HTTP简介
HTTP
是HyperText Transfer Protocol
的缩写,它是互联网数据传输的基础。在Flask
框架中,同样提供了进行数据交互的HTTP
方法。
HTTP方法
常用的HTTP
请求方法如下表所示
HTTP方法
描述
GET
请求指定的资源,被认为是不安全的方法
POST
会向服务器提交数据,请求服务器进行处理,如表单提交、文件上传
HEAD
与GET方法一样,但是服务器不会回传响应主体,常用来查看服务器的性能
PUT
向服务器上传内容
DELETE
请求服务器删除所请求URI
Flask处理GET和POST
在实际场景中,应用最多的就是GET
和POST
方法了。在Flask
中,我们可以在Flask
对象的route
方法中指定HTTP
方法,如果不写的话,默认的就是GET
。为了在服务器端处理POST
请求,让我们先创建一个表单来获取用户的输入。来看实例
index.html
文件内容
<!DOCTYPE html>
这里我们在form
中指定的是POST
方法。接下来在run.py
文件中处理请求
from flask import Flask, request
可以看到,在@app.route
中,我们也指定了POST
方法,然后通过flask
中的request
对象来获取form
表单的数据,接着进行一个简单判断,返回不同的网页内容。
我们用浏览器打开index.html
,在用户名和密码框中都输入xugaoxiang
,点击提交,就会跳转到显示Welcome xugaoxiang
的页面,否则跳转到显示Welcome
的页面,如下图
flask
flask
flask
接下来看看客户端采用GET
请求的实例,我们在上面的基础上进行修改即可。
index.html
文件,将原来的post
改为get
<form action = "http://localhost:5000" method = "get">
run.py
中将原来的POST
改为GET
,表单的接收也适当修改下
@app.route('/', methods=['GET'])
整个运行的结果是一模一样的,但是注意到表单提交之后的地址栏信息,如下
flask
后面多出了?username=xugaoxiang&password=xugaoxiang
,GET
请求会将表单的数据以键值对的形式拼接到URL
后发送给服务器。这就是GET
和POST
最重要的区别,对于一些敏感信息,GET
方法是及其不安全的,千万不要这样使用。
源码下载
https://github.com/xugaoxiang/FlaskTutorial
本文分享自微信公众号 - 迷途小书童的Note(Dev_Club)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。