如何将烧瓶应用程序分成多个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子前缀。