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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python 模块EasyGui详细介绍
Feb 19 Python
Python决策树分类算法学习
Dec 22 Python
python统计多维数组的行数和列数实例
Jun 23 Python
对Python 内建函数和保留字详解
Oct 15 Python
python实现复制文件到指定目录
Oct 16 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
Python通过len函数返回对象长度
Oct 22 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
总结Python变量的相关知识
Jun 28 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
微信支付扫码支付php版
2016/07/22 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
自制PHP框架之设计模式
2017/05/07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
webpack下实现动态引入文件方法
2018/02/22 Javascript
python中threading超线程用法实例分析
2015/05/16 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python实现简单登陆系统
2018/10/18 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Python更新所有已安装包的操作
2020/02/13 Python
django中嵌套的try-except实例
2020/05/21 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
python绘图模块之利用turtle画图
2021/02/12 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
一些.net面试题
2014/10/06 面试题
最新大学职业规划书范文
2013/12/30 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
故意伤害辩护词
2015/05/21 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Ajax实现异步加载数据
2021/11/17 Javascript
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers