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 相关文章推荐
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
Python迭代用法实例教程
Sep 08 Python
python 调用HBase的简单实例
Dec 18 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
python os.path模块常用方法实例详解
Sep 16 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
python七夕浪漫表白源码
Apr 05 Python
谈一谈基于python的面向对象编程基础
May 21 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
python实现图片九宫格分割的示例
Apr 25 Python
Python字符串常规操作小结
Apr 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
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
Python3中的json模块使用详解
2018/05/05 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
详解python tcp编程
2020/08/24 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
学生实习证明范文
2014/09/28 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
环保建议书作文400字
2015/09/14 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
Python数组变形的几种实现方法
2022/05/30 Python