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

2024-05-06 19:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我的flask应用程序目前由一个单独的test.py文件和定义的main()路由组成。有什么方法可以创建一个包含在test.py中未处理的路由的test2.py文件吗?

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

我担心test.py中的路由太多,因此希望能够运行python test.py,这也将拾取test.py上的路由,就像它是同一文件的一部分一样。我必须在test.py和/或test2.py中进行哪些更改才能使其生效?


Tags: 文件方法pytestapp应用程序flask路由
3条回答

我想推荐GitHub的flask-empty

它提供了理解Blueprints、多个视图和extensions的简单方法。

将应用程序划分为蓝图是一个好主意。但是,如果这还不够,并且您想将蓝图本身划分为多个py文件,那么也可以使用常规Python模块导入系统,然后循环使用从其他文件导入的所有路由。

我用代码创建了一个要点:

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

据我所知,这是目前唯一可行的划分蓝图的方法。不可能在烧瓶中创建“次级蓝图”,尽管有一个问题有待解决,对此进行了大量讨论:

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

此外,即使它是可能的(而且它可能确实能够使用该问题线程中的一些代码片段),子蓝图对于您的用例来说仍然可能太过受限-例如,如果您不希望子模块中的所有路由都具有相同的URL子前缀。

您可以使用常用的Python包结构将应用程序分成多个模块,see the Flask docs.

然而

Flask uses a concept of blueprints for making application components and supporting common patterns within an application or across applications.

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

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 docs

相关问题 更多 >