如何使用单个文件而不是装饰器在Flask中集中路由?

我想知道,如果可能的话,如何使用单个文件(例如routes.py)来映射路由,并且程序分布在不同的python文件/模块中.

我怎样才能做到这一点?

我对Flask这个很新.我试图搜索,但我想没有使用正确的术语,我找不到解决方案.

我相信一定有办法.

谢谢.

解决方法:

如您所知,装饰器可用作函数:

@app.route('/')
def home():
    return 'home'

相当于:

def home():
    return 'home'

home = app.route('/')(home)

但是Flask已经有了特殊的方法add_url_rule.它用于路线装饰器.

def home():
    return 'home'

app.add_url_rule('/', None, home, {})

因此,您可以创建特殊模块,其中将导入视图函数并使用add_url_rule添加路径.不要忘记在使用(导入)之前执行此代码.

add_url_rule正在创建Rule实例并将其添加到Flask.url_map,因此您还可以显式创建Rule并将其添加到url_map.但我希望这不需要你.

更新

使用Flask,您还可以使用Lazily Loading Views,请参阅文档:http://flask.pocoo.org/docs/patterns/lazyloading/中的详细信息.

上一篇:php – Laravel上一个和下一个记录


下一篇:php – 为什么我的Controller不工作但抛出FileLoaderException?