如何将Flask蓝图拆分为子文件夹中的多个文件?

2024-10-02 00:22:35 发布

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

背景

我有一个Flask应用程序,其文件夹结构大致如下:

/server
    /templates/
    /__init__.py
    /api.py
    /app.py
  • api.py包含用名为“api”的烧瓶蓝图注册的烧瓶路由。在
  • app.py是我想启动Flask应用程序时运行的文件。在

目标

我想把api.py文件将文件放入多个文件中,以便结构如下所示:

^{pr2}$

问题

但是,当我执行此操作时,当访问这些新文件中的任何路由时,会出现“View function did return a response”错误:

[2019-01-30 07:58:32,940] ERROR in app: Exception on /api/app/load/ [GET]
Traceback (most recent call last):
  File "C:\Users\Nathan\Documents\rhymecraft\server\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Nathan\Documents\rhymecraft\server\venv\lib\site-packages\flask\app.py", line 1615, in full_dispatch_request
    return self.finalize_request(rv)
  File "C:\Users\Nathan\Documents\rhymecraft\server\venv\lib\site-packages\flask\app.py", line 1630, in finalize_request
    response = self.make_response(rv)
  File "C:\Users\Nathan\Documents\rhymecraft\server\venv\lib\site-packages\flask\app.py", line 1725, in make_response
    raise ValueError('View function did not return a response')
ValueError: View function did not return a response

问题

如何将烧瓶蓝图拆分为子文件夹中的多个文件?在


Tags: 文件inpyapiappreturnservervenv
1条回答
网友
1楼 · 发布于 2024-10-02 00:22:35

我想出来了:

问题是新的api/__init__.py文件没有从新的非__init__.py文件(/api/account.py/api/song.py)导入路由。在

因此,当蓝图注册到app.py中时,它只是在执行from api import api,但从来没有任何代码会导致account.py和{}模块中的代码运行。在

解决办法是:

  1. 更新api/__init__.py,在顶部包含from api.account import *和{}。在
  2. 将Blueprint对象的定义从/api/__init__.py移到一个新的/api/utils.py文件中,这样它就可以被包含文件(/api/__init__.py/api/account.py,和/api/song.py)的所有路由导入。
    • 这只是为了防止循环导入错误。在

相关问题 更多 >

    热门问题