在Python路由中预处理路由参数

1 投票
1 回答
748 浏览
提问于 2025-04-15 11:59

我在用路由来处理所有的URL映射工作。这里是我应用程序中的一个典型路由:

map.routes('route', '/show/{title:[^/]+}', controller='generator', filter_=postprocess_title)

我经常需要从{title}这个参数中去掉一些字符,比如空格和下划线。目前在控制器的每个方法里都有一个调用,用来执行这个转换。这样做不是很方便,我想让路由来处理这个工作。这样可以吗?

1 个回答

0

我对路由不太了解,所以不太清楚你想要的功能是否可以通过路由实现。

不过,也许你可以给你的控制器方法加一个装饰器,这样可以根据需要从参数中去掉一些字符。

我不确定这样做是否更方便。但在我看来,使用装饰器的感觉和在控制器方法内部直接处理是有区别的。

举个例子:


@remove_spaces_from('title')
def my_controller(...):
    ...

如果你对装饰器不太熟悉,可以在谷歌上搜索“python 装饰器”来入门。有一点要记住:当装饰器需要参数时,你需要在装饰器中包裹两层。

撰写回答