【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 "页面不见了"
【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉的更多相关文章
- 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图
WTF表单 wtf.py pip install flask-wtf # 安装 from flask_wtf import FlaskForm from wtform import StringF ...
- 【Flask】 python学习第一章 - 2.0 视图方式和返回值
路由参数与请求方式制定 ALT+回车 pycharm 快速导包 demo3 指定访问地址 与请求方式 # 给路由传入参数 使用尖括号 ,视图函数需要接收参数 @app.route(&q ...
- 【Flask】 python学习第一章 - 5.0 模板
jinjia2 模板 python实现 flask 内置语言 参照Djago实现 设置模板文件夹 设置模板语言 jinja2 demo6_template.html ----> 从代码渲染 ...
- 【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现 session-cookie 请求上下文
钩子函数和装饰器路由实现 before_request 每次请求都会触发 before_first_requrest 第一次请求前触发 after_request 请求后触发 并返回参数 tear ...
- 【Flask+Redis】 python学习第一章 - 7.0 断言 数据库测试 redis学习
assert 断言 def div(num1, num2): # 断言 assert isinstance(num1, int), "值类型错误" assert isinstanc ...
- python学习 第一章(说不定会有第零章呢)one day
------------恢复内容开始------------ 一.啥是python python是吉尔·范罗苏姆于1989年开发的一个新的脚本解释程序,是ABC语言的一种继承. 二.python的特点 ...
- 【Flask】 python学习第一章 - 创建与运行参数
windos 创建环境 sudo pip install virtualenv # 安装virtualenv virtualenv -p python dir_name cd dir_name p ...
- Python 学习第一章
学习内容如下: Python 介绍 Python 3 VS Python 2 软件的安装 第一个 Python 程序 变量与字符编码 用户输入与注释 一.Python 介绍 python的创始人为吉多 ...
- Python学习第一章
1.Python保留字即是关键字,我们不可以把他们当作任何标识符名称. python的标准库提供了一个keyword模板,可以输出当前版本的关键字: >>>import keywor ...
随机推荐
- EasyNVR网页Chrome无插件播放安防摄像机视频流是怎么做到web浏览器延时一秒内
背景说明 由于互联网的飞速发展,传统安防摄像头的视频监控直播与互联网直播相结合是大势所趋.传统安防的直播大多在一个局域网内,在播放的客户端上也是有所限制,一般都需要OCX Web插件进行直播.对于安防 ...
- Centos7.3部署安装Maven
需要提前配置好java环境 1.下载压缩包 将安装包下载到root家目录下 http://maven.apache.org/download.cgi 选择bin.tar.gz格式的压缩包 我是直接执行 ...
- [LeetCode] 67. Add Binary 二进制数相加
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- [LeetCode] 437. Path Sum III 路径和 III
You are given a binary tree in which each node contains an integer value. Find the number of paths t ...
- CEF4Delphi 常用设置
CEF4Delphi是由 SalvadorDíazFau 创建的一个开源项目,用于在基于Delphi的应用程序中嵌入基于Chromium的浏览器. CEF4Delphi 基于Henri Gourves ...
- 函数的练习1——python编程从入门到实践
8-1 消息: 编写一个名为display_message()的函数,它打印一个句子指出你在本章学的是什么.调用这个函数,确认显示的消息正确无误. def display_message(): pri ...
- python 之 网络编程(基于TCP协议的套接字通信操作)
第八章网络编程 8.1 基于TCP协议的套接字通信 服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连 ...
- Pandas的基础操作(一)——矩阵表的创建及其属性
Pandas的基础操作(一)——矩阵表的创建及其属性 (注:记得在文件开头导入import numpy as np以及import pandas as pd) import pandas as pd ...
- lmir 随笔
近期需要研究一些特征工程的工作,就打算把微软之前公布出来的特征都复现一遍,今天遇到的特征是 LMIR, 其实也就是language model for information retrieval的简写 ...
- Testbench编写技巧
一.基本架构(常用模板) `timescale 1ns/1ps //时间精度 `define Clock //时钟周期 module my_design_tb; //================= ...