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 实现引用其他.py文件中的类和类的方法
Apr 29 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
Django如何自定义分页
Sep 25 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
python 装饰器功能与用法案例详解
Mar 06 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
Python timeit模块原理及使用方法
Oct 10 Python
pycharm 关闭search everywhere的解决操作
Jan 15 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
JavaScript中的prototype使用说明
2010/04/13 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
用python实现批量重命名文件的代码
2012/05/25 Python
Python Deque 模块使用详解
2014/07/04 Python
Python多线程爬虫简单示例
2016/03/04 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
python删除某个目录文件夹的方法
2020/05/26 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
社区居务公开实施方案
2014/03/27 职场文书
目标责任书范本
2014/04/16 职场文书
梅花魂教学反思
2014/04/25 职场文书
2014年政教处工作总结
2014/12/20 职场文书
给病人的慰问信
2015/03/23 职场文书
汉字听写大会观后感
2015/06/12 职场文书
开业典礼致辞
2015/07/29 职场文书