如何将烧瓶应用程序分成多个py文件?

我的烧瓶应用程序目前由多个path和main()path定义的单个test.py文件组成。 有没有什么办法可以创build一个包含test.py中没有处理的path的test2.py文件?

 @app.route('/somepath') def somehandler(): # Handler code here 

我担心test.py中有太多的路由,并且希望能够运行python test.py ,它也会把test.py上的路由当作是同一个文件的一部分。 我在test.py必须做些什么改变,或者在test2.py包含test2.py改变才能使之工作?

您可以使用通常的Python包结构将您的应用程序分成多个模块, 请参阅Flask文档。

然而,

Flask使用蓝图的概念来制作应用程序组件,并支持应用程序或应用程序中的通用模式。

您可以在单独的文件中将应用程序的子组件创build为蓝图:

 simple_page = Blueprint('simple_page', __name__, template_folder='templates') @simple_page.route('/<page>') def show(page): # stuff 

然后在主要部分使用它:

 from yourapplication.simple_page import simple_page app = Flask(__name__) app.register_blueprint(simple_page) 

蓝图也可以绑定特定资源:模板或静态文件。 所有的细节请参阅Flask文档 。

我想推荐在GitHub上烧瓶 。

它提供了一个简单的方法来了解蓝图 ,多个视图和扩展 。

将应用程序划分为蓝图是一个好主意。 但是,如果这还不够,并且如果要将蓝图本身分割成多个py文件,则可以使用常规的Python模块导入系统,然后遍历从其他文件导入的所有path。

我用这样的代码创build了一个Gist:

https://gist.github.com/Jaza/61f879f577bc9d06029e

据我所知,这是目前划分蓝图唯一可行的方法。 在Flask中创build“子蓝图”是不可能的,尽pipe有一个问题在这方面进行了大量的讨论:

https://github.com/mitsuhiko/flask/issues/593

另外,即使这是可能的(并且可能可以使用来自该问题线索的一些摘录),那么子蓝图对您的用例来说可能太严格了 – 例如,如果您不希望所有的路由子模块具有相同的URL子前缀。