Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2279606
  • 博文数量: 297
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2200
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(297)

分类: Python/Ruby

2020-09-01 09:56:50

转载自:


flask

flask是python实现的简单的web框架,与django互补。

flask教程

如何理解flask

  • 路由 -> /request/uri

  • handler -> 路由进来之后处理request并返回response的逻辑

最简单的例子

  1. from flask import Flask
  2. app = Flask(__name__)

  3. @app.route("/") # 路由
  4. def hello(): # handler
  5.     return "Hello World!"

实现mocked smile task api

获取所有的任务

GET /api/tasks # get all tasks 

查看一个任务的详情

GET /api/tastks/:task_id # get a task with task_id 

完成一个任务

PUT /api/tastks/:task_id # complete a task 

代码


  1. from flask import Flask, jsonify, g
  2. import copy
  3. app = Flask(__name__)

  4. @app.before_request
  5. def set_up_data():
  6.     g.data = [
  7.         {'id': 1, 'title': 'task 1', 'desc': 'this is task 1'},
  8.         {'id': 2, 'title': 'task 2', 'desc': 'this is task 2'},
  9.         {'id': 3, 'title': 'task 3', 'desc': 'this is task 3'},
  10.         {'id': 4, 'title': 'task 4', 'desc': 'this is task 4'},
  11.         {'id': 5, 'title': 'task 5', 'desc': 'this is task 5'}
  12.     ]

  13.     g.task_does_not_exist = {"msg": "task does not exist"}

  14. @app.route('/api/tasks')
  15. def get_all_tasks():
  16.     return jsonify(g.data)

  17. @app.route('/api/tasks/')
  18. def get_task(task_id):
  19.     if task_id > 0 and task_id <= len(g.data):
  20.         return jsonify(g.data[task_id])
  21.     else:
  22.         return jsonify(g.task_does_not_exist)

  23. @app.route('/api/tasks/', methods=['PUT'])
  24. def complete_task(task_id):
  25.     if task_id > 0 and task_id <= len(g.data):
  26.         tmp = copy.deepcopy(g.data[task_id])
  27.         tmp['done'] = True
  28.         return jsonify(tmp)
  29.     else:
  30.         return jsonify(g.task_does_not_exist)

运行

  1. set FLASK_APP=smile_task_mock_server.py

  2. flask run
  3. * Serving Flask app "smile_task_mock_server"
  4. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

浏览器打开localhost:5000就好了

知识补充:
flask之g对象
1.在flask中,有一个专门用来存储用户信息的g对象,g的全称的为global。
2.g对象在一次请求中的所有的代码的地方,都是可以使用的。

Flask 的 jsonify
Flask 框架里,可以用 jsonify 返回 json 数据

阅读(18322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~