社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
主要介绍Django和flask两种。
Django是Python Web 框架中重量级选手的最具代表性的一位。Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。Django提供了很多的工具,对很多东西也做了封装(比如models,users,authentication)。
Flask是一个很轻的框架,较为灵活,Flask显著的特点是:它是一个“微”框架。”微”意味着Flask旨在保持核心的简单,但同时又易于扩展。默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。
对于实现一个网站来说,django是个不错的选择。
鉴于我们的项目里主要是为了提供服务接口,不需要view层以及orm层的建设,故使用轻量级的flask是个不错的选择。
pip install flask
windows下打开cmd窗口输入命令即可(已安装python环境下)
import json
from flask import Flask, abort, request, jsonify
app = Flask(__name__)#创建实例
# 任务测试数据暂时存放
tasks = []
#无参接口
@app.route('/HelloWorld')
def hello_world():
return "Hello World!"
#添加任务
@app.route('/addTask/', methods=['POST'])
def add_task():
if not request.json or 'id' not in request.json or 'info' not in request.json:
abort(400)
task = {'id': int(request.json['id']),'info': request.json['info']}#获取post请求参数,request.json[]
tasks.append(task)#添加任务到任务列表
return jsonify({'result': 'success'})
返回结果:
#获取任务
@app.route('/getTask/', methods=['GET'])
def get_task():
if not request.args or 'id' not in request.args:
# 没有指定id则返回全部
return jsonify(tasks)
else:
task_id = request.args['id']#获取get请求参数,request.args[]
task = filter(lambda t: t['id'] == int(task_id), tasks)#获取指定id的任务
task = list(task)#需做类型转换
return jsonify(task) if task else jsonify({'result': 'not found'})
这种是不太推荐的启动方式,可以在debug阶段使用。
if __name__ == "__main__":
# 将host设置为0.0.0.0(host="0.0.0.0",),则外网用户也可以访问到这个服务
app.run( port=8383, debug=True)#可在此指定端口号,默认端口为5000
(参见http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application)
$ export FLASK_APP=flask_demo.py
$ python -m flask run –-port=8383
注:windows下将export换成set即可
Falsk restful框架的功能主要体现在可以设置一个url的不同请求方式对应的操作,而无需自定义多个接口路由信息。这个框架用Resource类将封装好了http的各种请求,只需定义一下对应的函数即可,返回值也是可以直接丢对象过去,写好接口类用API配置一下路径就可以。
pip install flask-restful
app = Flask(__name__)#创建app实例
api = Api(app)#创建接口实例
# 获取请求中的task参数
parser = reqparse.RequestParser()
parser.add_argument('task')#入口参数声明
# Todo
# 对单个任务的获取、删除、更新
class Todo(Resource):
def get(self, todo_id):
abort_if_todo_doesnt_exist(todo_id)
return TODOS[todo_id]
def delete(self, todo_id):
abort_if_todo_doesnt_exist(todo_id)
del TODOS[todo_id]
return '', 204
def put(self, todo_id):
args = parser.parse_args()
task = {'task': args['task']}
TODOS[todo_id] = task
return task, 201
##
## 设置Api路由信息
##
api.add_resource(TodoList, '/todos')
api.add_resource(Todo, '/todos/<todo_id>')
1.查询单任务:
2. 更新任务:
3. 删除任务
附:Postman工具,用于发送http请求
CSDN的下载区有资源。
我的百度云盘:
链接:https://pan.baidu.com/s/1Zg4eeBcPSlGlmfjK-BXtNw
提取码:6unp
复制这段内容后打开百度网盘手机App,操作更方便哦
代码github地址:
flask_demo.py和flask_restful_demo:
(晚点上传到github之后补上)
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!