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读取mp3中ID3信息的方法
Mar 05 Python
python获取指定网页上所有超链接的方法
Apr 04 Python
深入理解python多进程编程
Jun 12 Python
Python爬虫工程师面试问题总结
Mar 22 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
python字符串替换re.sub()实例解析
Feb 09 Python
500行python代码实现飞机大战
Apr 24 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
Python基础教程,Python入门教程(超详细)
Jun 24 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
生成静态页面的PHP类
2006/11/25 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
php单例模式的简单实现方法
2016/06/10 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
javascript类型转换示例
2014/04/29 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
踏青活动策划方案
2014/08/19 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
2014年保育员工作总结
2014/12/02 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
趣味运动会广播稿
2015/08/19 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
24年收藏2000多部退役军用电台
2022/02/18 无线电