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服务器拒绝服务攻击代码
Jan 16 Python
tornado捕获和处理404错误的方法
Feb 26 Python
深入理解Python中装饰器的用法
Jun 28 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python实现感知器算法(批处理)
Jan 18 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 Python
python新手学习可变和不可变对象
Jun 11 Python
Python读取yaml文件的详细教程
Jul 21 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
Python函数中apply、map、applymap的区别
Nov 27 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中使用Oracle数据库(6)
2006/10/09 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
django允许外部访问的实例讲解
2018/05/14 Python
Python if语句知识点用法总结
2018/06/10 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Python操作Excel的学习笔记
2021/02/18 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
教师实习自我鉴定
2013/12/13 职场文书
《手指教学》反思
2014/02/14 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
护理见习报告范文
2014/11/03 职场文书
法院个人总结
2015/03/03 职场文书
中英文求职信范文
2015/03/19 职场文书
被告代理词范文
2015/05/25 职场文书
预备党员群众意见
2015/06/01 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers