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操作时间和日期之asctime()方法的使用
May 22 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python线程指南详细介绍
Jan 05 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
python re模块常见用法例举
Mar 01 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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实现专业获取网站SEO信息类实例
2015/04/02 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
javascript如何创建对象
2016/08/29 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
django queryset相加和筛选教程
2020/05/18 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
土建资料员岗位职责
2014/01/04 职场文书
物流创业计划书
2014/02/01 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
植树节活动总结
2014/04/30 职场文书
新学期开学演讲稿
2014/05/24 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
python实现的web监控系统
2021/04/27 Python
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript