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函数式编程指南(二):从函数开始
Jun 24 Python
python各种语言间时间的转化实现代码
Mar 23 Python
python对象及面向对象技术详解
Jul 19 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
python tkinter实现屏保程序
Jul 30 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
python实现简单俄罗斯方块
Mar 13 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
JavaScript 异步调用
2017/10/25 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Python深入学习之对象的属性
2014/08/31 Python
python多线程操作实例
2014/11/21 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python学习笔记之装饰器
2020/08/06 Python
python如何实现图片压缩
2020/09/11 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
应届毕业生就业自荐信
2013/10/26 职场文书
学校经典推荐信
2013/10/30 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
Python基础之操作MySQL数据库
2021/05/06 Python
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android