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访问系统环境变量的方法
Apr 29 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
python3转换code128条形码的方法
Apr 17 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
Python解析多帧dicom数据详解
Jan 13 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
python实现126邮箱发送邮件
May 20 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
python实现按日期归档文件
Jan 30 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打印输出函数汇总
2016/08/28 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
微信小程序实现底部弹出模态框
2020/11/18 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
Python实现二叉搜索树
2016/02/03 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python之PyMongo使用总结
2017/05/26 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
Python中请不要再用re.compile了
2019/06/30 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
初中生物教学反思
2014/01/10 职场文书
网管求职信
2014/03/03 职场文书
走群众路线剖析材料
2014/10/09 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记