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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
Python import自定义模块方法
Feb 12 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
pandas修改DataFrame列名的方法
Apr 08 Python
python指定写入文件时的编码格式方法
Jun 07 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
Django上线部署之IIS的配置方法
Aug 22 Python
python实现七段数码管和倒计时效果
Nov 23 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
dpn网络的pytorch实现方式
Jan 14 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
基于PyTorch中view的用法说明
Mar 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 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python能在浏览器能运行吗
2020/06/17 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
导游词之麻姑仙境
2019/11/18 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
Oracle锁表解决方法的详细记录
2022/06/05 Oracle