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中列表生成式的用法
Mar 31 Python
python中私有函数调用方法解密
Apr 29 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
让你的Python代码实现类型提示功能
Nov 19 Python
Django集成celery发送异步邮件实例
Dec 17 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
如何通过Django使用本地css/js文件
Jan 20 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Django模型中字段属性choice使用说明
Mar 30 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
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
Python文件操作类操作实例详解
2014/07/11 Python
Python生成随机MAC地址
2015/03/10 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
如何表示python中的相对路径
2020/07/08 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
《桥》教学反思
2014/04/09 职场文书
本科毕业生自荐信
2014/06/02 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
面试通知邮件
2015/04/20 职场文书
《秋思》教学反思
2016/02/23 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers