用于Sinatra风格URL路由的Ruby块的Python等价物
有没有办法用Python重新创建Sinatra的URL路由?有什么理由不希望这样做 来自西纳特拉:用于Sinatra风格URL路由的Ruby块的Python等价物,python,ruby,sinatra,block,flask,Python,Ruby,Sinatra,Block,Flask,有没有办法用Python重新创建Sinatra的URL路由?有什么理由不希望这样做 来自西纳特拉: get '/' do 'Hello world!' end 从烧瓶(使用装饰器进行布线): Sinatra通过Ruby块实现了这种简洁性: def get(path, opts={}, &block) conditions = @conditions.dup route('GET', path, opts, &block) @conditions
get '/' do
'Hello world!'
end
从烧瓶(使用装饰器进行布线):
Sinatra通过Ruby块实现了这种简洁性:
def get(path, opts={}, &block)
conditions = @conditions.dup
route('GET', path, opts, &block)
@conditions = conditions
route('HEAD', path, opts, &block)
end
我推测Python没有完全等同于Ruby块的功能,但是有一些方法可以重新创建功能。如何做到这一点?正如您所说,Python没有ruby块之类的东西。装饰器是路由的常用解决方案。另一种方法是创建一个包含路由的列表/目录,但由于您似乎希望路由定义位于底层代码的旁边,所以装饰器方法就是您想要使用的方法。另一种方法是使用元类,就像webpy中所做的那样。所以,关于你的第二个问题“有什么理由不希望这样做吗?”
- 有了命名函数,就可以为(某些函数)执行
url\u操作,从而可以轻松地重新构建站点
- 命名函数允许测试、文档字符串等
def get(path, opts={}, &block)
conditions = @conditions.dup
route('GET', path, opts, &block)
@conditions = conditions
route('HEAD', path, opts, &block)
end