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 排列组合之itertools
Mar 20 Python
Python闭包实现计数器的方法
May 05 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Python生成rsa密钥对操作示例
Apr 26 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
利用Python优雅的登录校园网
Oct 21 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 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
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php-app开发接口加密详解
2018/04/18 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
js实现一个简易计算器
2020/03/30 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
sublime python3 输入换行不结束的方法
2018/04/19 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
python实现经纬度采样的示例代码
2020/12/10 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
应届大学生求职的自我评价
2013/11/17 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年就业工作总结
2014/11/26 职场文书
高中生个性发展自我评价
2015/03/09 职场文书