flask框架路由常用定义方式总结


Posted in Python onJuly 23, 2019

本文实例讲述了flask框架路由常用定义方式。分享给大家供大家参考,具体如下:

路由的各种定义方式

请求方式限定

使用 methods 参数指定可接受的请求方式,可以是多种

@app.route('/',methods=['GET'])
def hello():
  return '<h1>hello world</h1>'

路由查找方式

同一路由指向两个不同的函数,在匹配过程中,至上而下依次匹配

@app.route('/')
def hello():
  return '<h1>hello world</h1>'
@app.route('/')
def hello_2017():
  return '<h1>hello 2017</h1>'

所以上面路由 / 输出的结果为 hello 函数的结果

给路由传参示例

有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数 来显示不同用户的个人信息。

路由传递的参数默认当做string处理,这里指定int,尖括号中的内容是动态的,也可不指定类型

@app.route('/user/<int:id>')
def hello_itheima(id):
  return 'hello itcast %d' %id

重定向redirect示例

from flask import redirect
@app.route('/')
def hello_itheima():
  return redirect('http://www.itcast.cn')

返回JSON

from flask import Flask,json
@app.route('/json')
def do_json():
  hello = {"name":"stranger", "say":"hello"}
  return json.dumps(hello)

返回状态码示例

在 Python 中返回状态码有两种方式实现:

- 直接return 
    - 可以自定义返回状态码,可以实现不符合http协议的状态码,例如:error=666,errmsg='查询数据库异常',其作用是为了实现前后端数据交互的方便
- abort方法
    - 只会抛出符合http协议的异常状态码,用于手动抛出异常

@app.route('/')
def hello_itheima():
  return 'hello itcast',666

正则路由示例

在web开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,限制访问,优化访问

导入转换器包

from werkzeug.routing import BaseConverter

自定义转换器并实现

# 自定义转换器
class Regex_url(BaseConverter):
  def __init__(self,url_map,*args):
    super(Regex_url,self).__init__(url_map)
    self.regex = args[0]
app = Flask(__name__)
# 将自定义转换器类添加到转换器字典中
app.url_map.converters['re'] = Regex_url
@app.route('/user/<re("[a-z]{3}"):id>')
def hello_itheima(id):
  return 'hello %s' %id

自带几种转换器

DEFAULT_CONVERTERS = {
  'default':     UnicodeConverter,
  'string':      UnicodeConverter,
  'any':       AnyConverter,
  'path':       PathConverter,
  'int':       IntegerConverter,
  'float':      FloatConverter,
  'uuid':       UUIDConverter,
}

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

Python 相关文章推荐
python二分法实现实例
Nov 21 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
python实现拓扑排序的基本教程
Mar 11 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
django迁移数据库错误问题解决
Jul 29 Python
django之自定义软删除Model的方法
Aug 14 Python
Python处理session的方法整理
Aug 29 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
详解python3类型注释annotations实用案例
Jan 20 Python
python处理大日志文件
Jul 23 #Python
Django urls.py重构及参数传递详解
Jul 23 #Python
Django框架基础模板标签与filter使用方法详解
Jul 23 #Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 #Python
Python中拆分字符串的操作方法
Jul 23 #Python
python实现电子书翻页小程序
Jul 23 #Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 #Python
You might like
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
js中的string.format函数代码
2020/08/11 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
layui导航栏实现代码
2017/05/19 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
高中运动会入场词
2014/02/14 职场文书
暑期社会实践感言
2014/02/25 职场文书
安全目标责任书
2014/07/22 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
世界红十字日活动总结
2015/02/10 职场文书
会计求职简历自我评价
2015/03/10 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL