我有一个Flask应用,其文件夹结构大致如下:
/server
/templates/
/__init__.py
/api.py
/app.py
api.py
包含已通过名为“ api”的烧瓶蓝图注册的烧瓶路由。app.py
是我要启动Flask应用程序时运行的文件。我想将api.py文件分解为多个文件,以便结构如下:
/server
/api/
/__init__.py
/account.py
/song.py
/app.py
/templates/
但是,当我执行这些操作时,访问这些新文件中的任何路由时,都会出现“查看功能未返回响应”错误:
[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
如何将烧瓶蓝图分解为一个子文件夹中的多个文件?
答案 0 :(得分:0)
我知道了:
问题是新的api/__init__.py
文件没有从新的非{__init__.py
文件(/api/account.py
和/api/song.py
)中导入路由。
因此,当蓝图在app.py
中注册时,它只是在进行from api import api
,但是从来没有任何代码会导致account.py
和{{1}中的代码}模块开始运行。
解决方案是:
song.py
以在顶部包含api/__init__.py
和from api.account import *
。from api.song import *
并移到新的/api/__init__.py
文件中,以便所有包含路径的文件(/api/utils.py
,{{1 }}和/api/__init__.py
)。