我想知道,如果可能的话,如何使用单个文件(例如:routes.py
)来映射路由,并将程序分布在不同的python文件/模块中。
我该怎么做?
我对Flask这个很新。我试图搜索,但我想没有使用正确的术语,我找不到解决方案。
我相信一定有办法。
谢谢。
答案 0 :(得分:5)
如您所知,装饰器可用作函数:
@app.route('/')
def home():
return 'home'
相当于:
def home():
return 'home'
home = app.route('/')(home)
但是Flask
已经为此设置了特殊方法add_url_rule
。它用在route
装饰器中。
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/。