【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉

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 "页面不见了"

原文地址:https://www.cnblogs.com/oscarli/p/12052283.html

时间: 2024-11-03 03:36:00

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

【Flask项目】 python学习第一章 - 2.0 日志 抽取蓝图 抽取工厂函数

日志      导入logging函数 # 设置日志的记录等级 logging.basicConfig(level=logging.DEBUG) # 调试debug级 # 创建日志记录器,指明日志保存的路径.每个日志文件的最大大小.保存的日志文件个数上限 file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10) # 创建日志记录的格式 日志等级 输入日志信息的文件

【Git】 python学习第一章 - 1.0 git管理源代码

分布式版本控制系统 方便多人协同开发 方便版本控制 工作区 git add ----> 暂存区 git commit --->仓库区 git pull git push  ---->服务器 git init -----> 初始化git git status ----->  查看git 工作区 状态 git add -----> 添加文件至暂存区    git remove ---->取消暂存 git commit  -m “注释” git push 推送 git 

python 学习第一章(python基础编程第二版)

第一章:基础知识 1.双斜线:实现整除的操作符 >>>1//2 0 就算是浮点数,双斜线也会执行整除 >>>1.0//2.0 0.0 2.幂(乘方)运算符:双星 >>>2**3 8 tip:可以用函数pow代替运算符,pow(2,3) 3.十六进制和八进制 十六进制:前面加0x,第一个是数字0 >>>0xAF 175 八进制:在3.0以上版本的python中加0o,首数字是0,第二个是字母o >>>0o10 8 4.

【Flask】 python学习第一章

Hello world 案例: 1 from flask import Flask 2 # 创建Flask应用程序 3 # 第一个参数指定Flask 对应的模板 在决定静态文件从哪个位置开始找 4 app = Flask(__name__, 5 static_path = "/static", # 表示静态文件访问路径 6 static_url_path= '/python27', 7 static_folder='static' # 表示文件存放目录 8 templete_folde

python学习第一章要点

1.python起源及版本 python于1989年问世,到现在版本已经到了3.5,用的最多的还是2.x 版本3.x比2.x的主要差别如下: 3.x不用单独定义字符集类型,默认为unicode; print()取代了print; input取代了raw_input,2.7版本中input和raw_input都能用,但不完全一样,2.7中input输入不带引号的当变量处理,要输入字符串要带引号,而3.0以上版本input输入字符串时无需带引号; 去掉了很多重复的方法,规范了方法名,将带_开头的方法

python学习第一章

python介绍: Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python是一门什么样的语言: 编程语言主要从以下几个角度为进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言,我们这里主要看编译型语言和解释型语言. 编译和解释的区别是什么?编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如

Python学习第一章:第一次的亲密接触之初识程序(二)

上次我们讲到print(Hello Word)及变量的使用,下面我们继续: 比如我们想在程序中实现格式化输出如: 那么我们我们就要进行简单的格式化定义,一个很简单的input语法实现,案例如下: 这里的%s代表着占位符. 还有一种比较简单的语法.format同样可以实现,案例如下: 这种方法同样可以实现上述功能. 那么我们现在就可以制作一个简单的用户登录程序,案例如下: 今天因为时间关系,我先写到这里,明天继续.

《HeadFirst Python》第一章学习笔记

对于Python初学者来说,舍得强烈推荐从<HeadFirst Python>开始读起,这本书当真做到了深入浅出,HeadFirst系列,本身亦是品质的保证.这本书舍得已在<Python起步:写给零编程基础的童鞋>一文中提供了下载.为了方便大家的学习,舍得特意制作了Jupyter Notebook格式的笔记,文章末尾舍得提供了笔记的下载地址. 读<HeadFirst Python>的同时,最紧要的是及时做练习,你甚至可以在快速浏览过一章后,便拿起练习来做. 做练习的时候

python 学习第一天

python 学习了好久,发现还是个小白,python还是不会用,从今天起每天学写一点小程序,做个打不死的小强. 相关知识:列表,字典 #!/usr/bin/env python people = { 'yong':{'phone':'123', 'addr':'Shang hai' }, 'bu':{'phone':'456', 'addr':'Wu han' }, 'yan':{'phone':'789', 'addr':'He nan' } } lables = {'phone':'pho