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 相关文章推荐
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
python gdal安装与简单使用
Aug 01 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
python查看数据类型的方法
Oct 12 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
Python操作Excel把数据分给sheet
May 20 Python
python右对齐的实例方法
Jul 05 Python
pymysql模块使用简介与示例
Nov 17 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 Python
Python中super().__init__()测试以及理解
Dec 06 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
第十五节--Zend引擎的发展
2006/11/16 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
php实现数字补零的方法总结
2018/09/12 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
多广告投放代码 推荐
2006/11/13 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
小学数学国培感言
2014/03/10 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
预备党员转正材料
2014/12/19 职场文书
《确定位置》教学反思
2016/02/18 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python