Python编程在flask中模拟进行Restful的CRUD操作


Posted in Python onDecember 28, 2018

这篇文章中我们将通过对HelloWorld的message进行操作,介绍一下如何使用flask进行Restful的CRUD。

概要信息

Python编程在flask中模拟进行Restful的CRUD操作

事前准备:flask

liumiaocn:flask liumiao$ which flask
/usr/local/bin/flask
liumiaocn:flask liumiao$ flask --version
Flask 1.0.2
Python 2.7.10 (default, Jul 15 2017, 17:16:57) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
liumiaocn:flask liumiao$

代码示例:HTTP谓词(GET)

就像angular的插值表达式在模版中的作用一样,在flask中也可以一样使用,如果不熟悉angular的插值表达式的话也不要紧,看完下面的例子,基本上就会有一个大致的印象。

代码示例

liumiaocn:flask liumiao$ cat flask_4.py 
#!/usr/bin/python
from flask import Flask
from flask import render_template
app = Flask(__name__)
greeting_messages=["Hello World", "Hello Python"]
@app.route("/api/messages",methods=['GET'])
def get_messages():
  return render_template("resttest.html",messages=greeting_messages) 
if __name__ == "__main__":
  app.debug=True
  app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$

模版文件

liumiaocn:flask liumiao$ cat templates/resttest.html 
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Hello Restful</title>
</head>
<body>
    {% for message in messages %}
 <h1>{{ message }}</h1>
    {% endfor %}
</body>
</html>
liumiaocn:flask liumiao$

代码解析:app.route中指定了HTTP谓词GET,缺省GET可以省略,如果一个方法对应多个谓词动作,通过request.method来分离时,可以写成methods=[‘GET','POST']的形式

执行&确认

liumiaocn:flask liumiao$ ./flask_4.py 
 * Serving Flask app "flask_4" (lazy loading)
 * Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 131-533-062

页面确认

Python编程在flask中模拟进行Restful的CRUD操作

代码示例:HTTP谓词(DELETE|PUT|POST)

liumiaocn:flask liumiao$ cat flask_4.py 
#!/usr/bin/python
from flask import Flask
from flask import render_template
from flask import request
import json
app = Flask(__name__)
greeting_messages=["Hello World", "Hello Python"]
#HTTP: GET: Retrieve operation
@app.route("/api/messages",methods=['GET'])
def get_messages():
  return render_template("resttest.html",messages=greeting_messages) 
#HTTP: DELETE: Delete operation
@app.route("/api/messages/<messageid>",methods=['DELETE'])
def delete_message(messageid):
  global greeting_messages
  del greeting_messages[int(messageid)]
  return render_template("resttest.html",messages=greeting_messages) 
#HTTP: PUT: Update operation
#HTTP: POST: Create operation
@app.route("/api/messages/<messageid>",methods=['PUT','POST'])
def update_message(messageid):
  global greeting_message
  msg_info=json.loads(request.get_data(True,True,False))
  #msg_info=request.args.get('message_info')
  #msg_info=request.form.get('message_info','default value')
  #msg_info=request.values.get('message_info','hello...')
  greeting_messages.append("Hello " + msg_info["message_info"])
  return render_template("resttest.html",messages=greeting_messages) 
if __name__ == "__main__":
  app.debug=True
  app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$

执行&结果确认

执行日志

liumiaocn:flask liumiao$ ./flask_4.py 
 * Serving Flask app "flask_4" (lazy loading)
 * Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 131-533-062

结果确认:Delete

liumiaocn:flask liumiao$ curl -X DELETE http://localhost:7000/api/messages/1
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Hello Restful</title>
</head>
<body>
  <h1>Hello World</h1>
</body>
</html>liumiaocn:flask liumiao$

可以看到执行一次DELETE之后,两条消息现在只剩下一条消息了,接下来使用POST添加再添加一条

liumiaocn:flask liumiao$ curl -X POST -d '{"message_info":"LiuMiaoPost"}' http://localhost:7000/api/messages/3
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Hello Restful</title>
</head>
<body>
  <h1>Hello World</h1>
  <h1>Hello LiuMiaoPost</h1>
</body>
</html>liumiaocn:flask liumiao$

再执行一次PUT操作

liumiaocn:flask liumiao$ curl -X PUT -d '{"message_info":"LiuMiaoPut"}' http://localhost:7000/api/messages/4
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Hello Restful</title>
</head>
<body>
  <h1>Hello World</h1>
  <h1>Hello LiuMiaoPost</h1>
  <h1>Hello LiuMiaoPut</h1>
</body>
</html>liumiaocn:flask liumiao$

小结

这篇文章中,使用最简单的方式在flask中模拟了一下如何进行Restful的CRUD操作,当然,实际的做法有很多种,在接下来的文章中还会介绍另外一种非常常见的轮子flask-restful.

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python字符串str和字节数组相互转化方法
Mar 18 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
K-近邻算法的python实现代码分享
Dec 09 Python
Python处理文本换行符实例代码
Feb 03 Python
python模拟表单提交登录图书馆
Apr 27 Python
python批量获取html内body内容的实例
Jan 02 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
python 修改本地网络配置的方法
Aug 14 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
python如何操作mysql
Aug 17 Python
python实现自动打卡的示例代码
Oct 10 Python
python获取服务器响应cookie的实例
Dec 28 #Python
基于Python在MacOS上安装robotframework-ride
Dec 28 #Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 #Python
Python编程图形库之Pillow使用方法讲解
Dec 28 #Python
对python中大文件的导入与导出方法详解
Dec 28 #Python
Python编程深度学习计算库之numpy
Dec 28 #Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 #Python
You might like
php文件上传后端处理小技巧
2016/05/22 PHP
php微信开发自定义菜单
2016/08/27 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
javascript基础知识
2016/06/07 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
详解Python多线程
2016/11/14 Python
python绘制条形图方法代码详解
2017/12/19 Python
简单了解python模块概念
2018/01/11 Python
Python函数装饰器实现方法详解
2018/12/22 Python
对python字典过滤条件的实例详解
2019/01/22 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
思想汇报范文
2013/11/04 职场文书
初婚未育证明
2014/01/15 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS