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 相关文章推荐
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
用python实现刷点击率的示例代码
Feb 21 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
wxPython实现文本框基础组件
Nov 18 Python
使用Python进行防病毒免杀解析
Dec 13 Python
python对接ihuyi实现短信验证码发送
May 10 Python
jupyter 添加不同内核的操作
Feb 06 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 Python
Python四款GUI图形界面库介绍
Jun 05 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
怎么使 Mysql 数据同步
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
浅谈jquery中delegate()与live()
2015/06/22 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
python利用装饰器进行运算的实例分析
2015/08/04 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python 编程速成(推荐)
2019/04/15 Python
简单了解Python生成器是什么
2019/07/02 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
2019年Java 最常见的 面试题
2016/10/19 面试题
市场营销专业个人自荐信格式
2013/09/21 职场文书
平面设计的岗位职责
2013/11/08 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
离婚案件答辩状
2015/05/22 职场文书
爱国电影观后感
2015/06/19 职场文书
英文投诉信格式
2015/07/03 职场文书
初中班主任工作随笔
2015/08/15 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
52条SQL语句教你性能优化
2021/05/25 MySQL