Flask框架响应、调度方法和蓝图操作实例分析


Posted in Python onJuly 24, 2018

本文实例讲述了Flask框架响应、调度方法和蓝图操作。分享给大家供大家参考,具体如下:

响应

像现在大部分的互联网应用用的数据传输格式都是JSON,当用户访问一个URL,我们如何通过Flask返回JSON的响应:

普通做法:

@app.route("/")
def showInfo():
  return jsonify({"name":"老王","age":18})

当我们的应用有大量的URL时,我们需要每次都用jsonify转换一下,不免觉得繁琐。此时会有人说,可以定义一个公共方法,将转换都在这个方法中实现就好了。这也不失为一个可行的方法,还有一种方法让Flask自动帮我们做这些工作:

from flask import Response,jsonify
class JSONResponse(Response):
  @classmethod
  def force_type(cls,response,environ=None):
    if isinstance(response,dict):
      response = jsonify(response)
    return super(JSONResponse,cls).force_type(response,environ)
app.response_class = JSONResponse
@app.route("/")
def showInfo():
  return {"name":"老王","age":18}

调度方法

flask.views.MethodView对每个HTTP方法执行不同的函数(映射到对应方法的小写的同名方法上),这对RESTful API尤其有用。

from flask.views import MethodView
class UserAPI(MethodView):
  def get(self):
    return jsonify({"method":"get"})
  def post(self):
    return jsonify({"method":"post"})
app.add_url_rule("/user",view_func=UserAPI.as_view("userview"))

当用户使用GET或POST请求http://localhost:5000/user时,会执行UserAPI中相应get,post函数。

蓝图

蓝图实现了应用的模块化,使用蓝图让应用层次清晰,开发者可以更容易的开发和维护项目。蓝图通常作用于相同的URL前缀。比如/user/item/user/info这样的地址,都以/user开头,那么他们就可以放在一个模块中。看如下例子:

### xxx.py
from flask import Blueprint
user = Blueprint("user",__name__)
@user.route("/info")
def info():
  return "User Info"
#######分割线#######
from xxx import user
app.register_blueprint(user,url_prefix="/user")

当用户请求http://localhost:5000/user/info时,就会返回”User Info”信息,效果与Django中的include类似。

希望本文所述对大家基于Flask框架的Python程序设计有所帮助。

Python 相关文章推荐
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
python实现简单的socket server实例
Apr 29 Python
Python学习入门之区块链详解
Jul 25 Python
Django如何实现内容缓存示例详解
Sep 24 Python
python处理数据,存进hive表的方法
Jul 04 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
python 经典数字滤波实例
Dec 16 Python
如何在Python对Excel进行读取
Jun 04 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
Python如何对齐字符串
Jul 30 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
Django中的Model操作表的实现
Jul 24 #Python
Python实现的tcp端口检测操作示例
Jul 24 #Python
python正则表达式之对号入座篇
Jul 24 #Python
Python 字符串与二进制串的相互转换示例
Jul 23 #Python
Python二进制串转换为通用字符串的方法
Jul 23 #Python
Python基于多线程实现ping扫描功能示例
Jul 23 #Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 #Python
You might like
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
python 正则式使用心得
2009/05/07 Python
详解Python当中的字符串和编码
2015/04/25 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python实现的简单计算器功能详解
2018/08/25 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Python操作qml对象过程详解
2019/09/26 Python
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
在职人员函授期间自我评价分享
2013/11/08 职场文书
运动会广播稿20字
2014/02/18 职场文书
工程师岗位职责规定
2014/02/26 职场文书
酒鬼酒广告词
2014/03/21 职场文书
《画家乡》教学反思
2014/04/22 职场文书
大学迎新生标语
2014/10/06 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
化工厂员工工作总结
2015/10/15 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js