3.1正则转换器定义

Class RegexConverter(BaseConverter):

  regex = "[0-9]{6}"

app.url_map.converters["re"] = RegexConverter

@app.route("/user/<re:user_id>")

def index():

  return "hello wolrd"

from flask import Flask
from werkzeug.routing import BaseConverter # 创建自定义转换器
class RegexConverter(BaseConverter):
regex = "[0-9]{6}" app = Flask(__name__)
# 将自己的转换器加入默认的服务器列表中
app.url_map.converters["re"] = RegexConverter # 规则: /user/6位数字 [0-9]{6}
# 自定义转换器
@app.route("/user/<re:user_id>")
def index(user_id):
return "index + %s" % user_id if __name__ == '__main__':
app.run(debug=True)

创建自定义转换器

3.2正则自定义转换器

Class RegexConverter(BaseConverter):

  def __init__(self, url_map , *args):

    super(RegexConverter, self).__init__(url_map)

    self.regex = args[0]

app.url_map.converters["re"] = RegexConverter

@app.route("/user/<re(‘[0-9]{6}’):user_id>")

def index():

  return "hello wolrd"

from flask import Flask
from werkzeug.routing import BaseConverter # 创建自定义转换器
class RegexConverter(BaseConverter):
# regex = "[0-9]{6}"
def __init__(self, url_map, *args):
super(RegexConverter, self).__init__(url_map)
self.regex = args[0] app = Flask(__name__)
# 将自己的转换器加入默认的服务器列表中
app.url_map.converters["re"] = RegexConverter # 规则: /user/6位数字 [0-9]{6}
# 自定义转换器
@app.route("/user/<re('[0-9]{5}'):user_id>")
def index(user_id):
return "index + %s" % user_id if __name__ == '__main__':
app.run(debug=True)

自定义转换器

3.3 转换器 to_python to_url

class ListConverter():

  regex  = "(\\d,)+\\d$"

  

  # 匹配参数后 对参数进行处理 再返回到视图函数上去

  def to_python(self, value):

    return value.split(",")

  # 使用url_for 的时候,对视图函数传的参数进行处理,以匹配路由 
# redirect(url_for("demo1",user_id=[1,2,3,4]))

  def to_url(self, value):

    return ",".join(str(v) for v in value)

  

from flask import Flask, redirect, url_for
from werkzeug.routing import BaseConverter # 创建自定义转换器
class RegexConverter(BaseConverter):
# regex = "[0-9]{6}"
def __init__(self, url_map, *args):
super(RegexConverter, self).__init__(url_map)
self.regex = args[0] class ListConverter(BaseConverter):
regex = "(\\d+,)+\\d$" # 匹配参数后 对参数进行处理 再返回到视图函数上去
def to_python(self, value):
return value.split(',') # 使用url_for 的时候,对视图函数传的参数进行处理,以匹配路由
def to_url(self, value):
result = ",".join(str(v) for v in value)
return result app = Flask(__name__)
# 将自己的转换器加入默认的服务器列表中
app.url_map.converters["re"] = RegexConverter
app.url_map.converters["list"] = ListConverter # 规则: /user/6位数字 [0-9]{6}
# 自定义转换器
@app.route("/user/<re('[0-9]{5}'):user_id>")
def demo1(user_id):
return "index + %s" % user_id @app.route("/users/<list:user_id>")
def demo2(user_id):
return "uses + %s" % user_id @app.route("/demo3")
def demo3():
return redirect(url_for("demo2", user_id=[1, 2, 3, 4])) if __name__ == '__main__':
app.run(debug=True)

to_python to_url

3.4 错误捕捉 

abort(404) #直接抛出 404

@app.errorhandler(404)  # 捕捉404 返回不见了

def demo1():

  return "页面不见了"

【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉的更多相关文章

  1. 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图

    WTF表单  wtf.py pip install flask-wtf  # 安装 from flask_wtf import FlaskForm from wtform import StringF ...

  2. 【Flask】 python学习第一章 - 2.0 视图方式和返回值

    路由参数与请求方式制定   ALT+回车 pycharm 快速导包  demo3  指定访问地址  与请求方式  #   给路由传入参数 使用尖括号 ,视图函数需要接收参数 @app.route(&q ...

  3. 【Flask】 python学习第一章 - 5.0 模板

    jinjia2 模板 python实现 flask 内置语言  参照Djago实现  设置模板文件夹 设置模板语言 jinja2 demo6_template.html  ----> 从代码渲染 ...

  4. 【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现 session-cookie 请求上下文

    钩子函数和装饰器路由实现 before_request 每次请求都会触发 before_first_requrest  第一次请求前触发 after_request  请求后触发 并返回参数 tear ...

  5. 【Flask+Redis】 python学习第一章 - 7.0 断言 数据库测试 redis学习

    assert 断言 def div(num1, num2): # 断言 assert isinstance(num1, int), "值类型错误" assert isinstanc ...

  6. python学习 第一章(说不定会有第零章呢)one day

    ------------恢复内容开始------------ 一.啥是python python是吉尔·范罗苏姆于1989年开发的一个新的脚本解释程序,是ABC语言的一种继承. 二.python的特点 ...

  7. 【Flask】 python学习第一章 - 创建与运行参数

    windos 创建环境 sudo pip install virtualenv   # 安装virtualenv virtualenv -p python dir_name cd dir_name p ...

  8. Python 学习第一章

    学习内容如下: Python 介绍 Python 3 VS Python 2 软件的安装 第一个 Python 程序 变量与字符编码 用户输入与注释 一.Python 介绍 python的创始人为吉多 ...

  9. Python学习第一章

    1.Python保留字即是关键字,我们不可以把他们当作任何标识符名称. python的标准库提供了一个keyword模板,可以输出当前版本的关键字: >>>import keywor ...

随机推荐

  1. Cannot find Makefile. Check your build settings.

    QT Cannot find Makefile. Check your build settings. Error while building/deploying project qt_client ...

  2. uni-app v-for循环遍历 动态切换class、动态切换style

    动态切换class,主要代码::class="i.themColor"  <view v-for="i in htmlJSON" class=" ...

  3. layui table.reload的bug

    bug1: bug描述:当cols列在reload中有变化时,渲染后部分cols列自动隐藏(并未对这些列设置hide:true) bug版本:2.3.5版本有此bug,今日更新最新版本2.5.5 仍有 ...

  4. LeetCode:字符串相加【415】

    LeetCode:字符串相加[415] 题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只 ...

  5. 从一个案例窥探ORACLE的PASSWORD_VERSIONS

    1.环境说明 ORACLE 客户端版本 11.2.0.1 ORACLE 服务端版本 12.2.0.1 2.异常现象 客户端(下文也称为Cp)访问服务端(Sp),报了一个错误: Figure 1 以错误 ...

  6. 01 Struts2框架学习(了解一下,已过时)

    1.框架介绍 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 早前,有三大框架strut ...

  7. [转帖]Linux教程(8)-Linux中的进程和日志㐇、

    Linux教程(8)-Linux中的进程和日志 2018-08-20 23:42:23 钱婷婷 阅读数 3554更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博主原 ...

  8. KAFA架构及其基本概念

    1.目标 - KAFA价格 在我们上一篇Kafka教程中,我们讨论了Kafka用例和应用程序.今天,在这个Kafka教程中,我们将讨论Kafka Architecture.在这篇Kafka Archi ...

  9. 用Python递归做个多层次的文件执行

    想用 递归实现多层次的 '.py'执行但是发现好像不能 import os def func(path): if os.path.isdir(path): for name in os.listdir ...

  10. 解决SQL server 18740、18456登录失败问题

    第一步:使用window管理员用户登录SQL server 第二步:如下图步骤(开始配置sa默认用户) 第三步:选择角色类型 第四步:选择和配置用户映射的数据库 第五步:授予允许连接,并开启登录权限 ...