在Python路由中预处理路由参数
我在用路由来处理所有的URL映射工作。这里是我应用程序中的一个典型路由:
map.routes('route', '/show/{title:[^/]+}', controller='generator', filter_=postprocess_title)
我经常需要从{title}这个参数中去掉一些字符,比如空格和下划线。目前在控制器的每个方法里都有一个调用,用来执行这个转换。这样做不是很方便,我想让路由来处理这个工作。这样可以吗?
1 个回答
0
我对路由不太了解,所以不太清楚你想要的功能是否可以通过路由实现。
不过,也许你可以给你的控制器方法加一个装饰器,这样可以根据需要从参数中去掉一些字符。
我不确定这样做是否更方便。但在我看来,使用装饰器的感觉和在控制器方法内部直接处理是有区别的。
举个例子:
@remove_spaces_from('title')
def my_controller(...):
...
如果你对装饰器不太熟悉,可以在谷歌上搜索“python 装饰器”来入门。有一点要记住:当装饰器需要参数时,你需要在装饰器中包裹两层。