gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:23:39 26 4
gpt4 key购买 nike

背景

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

/server
/templates/
/__init__.py
/api.py
/app.py
  • api.py 包含使用名为“api”的 Flask 蓝图注册的 Flask 路由。
  • 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
<小时/>

问题

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

最佳答案

我明白了:

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

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

解决方案是:

  1. 更新 api/__init__.py 以在顶部包含 from api.account import *from api.song import *
  2. 将 Blueprint 对象的定义从 /api/__init__.py 移出并移至新的 /api/utils.py 文件中,以便所有人都可以导入它包含路由的文件(/api/__init__.py/api/account.py/api/song.py) 。
    • 这只是为了防止循环导入错误。

关于python - 如何将 Flask 蓝图分解为子文件夹中的多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com