Python 集中烧瓶路线
我的同事希望将web服务器的所有路由放在一个路由文件中,而不是将它们分散在一堆函数中。他在Java/Play中就是这样做的:Python 集中烧瓶路线,python,flask,Python,Flask,我的同事希望将web服务器的所有路由放在一个路由文件中,而不是将它们分散在一堆函数中。他在Java/Play中就是这样做的: GET /recovery controllers.application.recovery() GET /signup controllers.application.signup(lang="sv") GET /<:lang>/signup controllers.application.signu
GET /recovery controllers.application.recovery()
GET /signup controllers.application.signup(lang="sv")
GET /<:lang>/signup controllers.application.signup(lang: String)
GET/recovery controllers.application.recovery()
获取/注册控制器.application.signup(lang=“sv”)
GET//signup controllers.application.signup(lang:String)
在烧瓶中进行是否可行/容易?是的,非常容易:
from flask import Flask
import controllers.application
app = Flask(__name__)
routes = '''\
GET /recovery controllers.application.recovery
GET /signup controllers.application.signup
GET /<lang>/signup controllers.application.signup'''
for route in routes.splitlines():
method,path,func = route.split()
app.add_url_rule(rule=path, view_func=eval(func), methods=[method])
app.run()
从烧瓶导入烧瓶
导入控制器.应用程序
app=烧瓶(名称)
路由=“”\
获取/恢复控制器.application.recovery
获取/注册控制器.application.signup
获取//注册控制器.应用程序.注册“”'
对于routes.splitlines()中的路由:
方法,路径,func=route.split()
app.add\u url\u rule(rule=path,view\u func=eval(func),methods=[method])
app.run()
这当然可以在没有eval()的情况下完成。并不是所有的东西都应该包含在程序员的便利之下。数据将更好地表示为一系列(方法、路径、函数)
三元组,如('GET','recovery',controllers.application.recovery)
,允许路由中的方法、路径、函数:
。这避免了不必要的eval
调用。