项目名称为 P18-P25 second_bule_print
目录
1 不添加过滤器
- 路由的转换实际上就是对get请求的操作
我们一般使用路由转换处理非敏感的数据(如小说网站的小说页数等),在flask中我们这样写
这时我们访问一下该路由
2 添加过滤器
那么如果我想对路由的格式有要求,那么我应该这样写
这里我们要求的是整形,我们先给个整形访问一下
发现函数接收的变量也是整形
我们现在给一串字符试一下
发现如果是一串字符就会返回404,404就不会print出我们的内容了
除了整形之外,Flask还内置了其他类型的转换器
- default 默认,无限制
- string 字符串,相当于无限制,如果你输入了一个18进去,它是字符串类型的,在默认中输入18进去也是字符串类型的
2.1 any过滤器
前两个相当于没有,下面我们给一个any的例子
如果不在这个迭代器中的元素就会返404,我们访问一个在迭代器中的
- 迭代器中的元素类型必须为字符
2.2 path过滤器
之后我们给一个path过滤器的例子
感觉上和string的差不多,我们后续如果有用到不同的我们再说
2.3 uuid 过滤器
uuid说明 UUID_百度百科
我们也简单用一下,后面如果提到会再讲
2.4 其他过滤器
我们也可以对传进来的数据设置最大值或最小值,那么我们应该这样写
- 把min改为max就是对最大值的限制
我们先输入18试一下
发现没有问题,我们再输入16试一下
发现返回404
这里我们就不测试所有的了,后面用到会再提
2.5 自定义过滤器
上面提到的过滤器除了int,float其他的其实一般都不用,我们一般会自己写一套方法进行过滤,我们这样写
首先导入werkzeug,然后使用其中的BaseConverter,BaseConvter是自定义过滤器的基类
之后我们自定义一个类,里面创建后搞一个属性regex,这个名称是固定的,然后在里面写上正则表达式
- 正则表达式有问题的话可以看一下这个 正则表达式_Suyuoa的博客-CSDN博客
之后使用url_map把过滤器注册给app,之后写上路由和视图
然后我们访问一下
自定义过滤器一共有三个变量
- custom_class 过滤器的类
- custom 过滤器的名字
- custom_num 过滤器给路由与视图的变量