来自不同文件的 Flask 路由不起作用

Tat*_*nho 5 python rest routes flask

我开始构建一个基于 Flask 的应用程序。这个想法是使用 REST API 进行一些操作,没有任何 HTML 等,只有简单的 JSON 响应。

如果我将所有内容都放在一个文件中,则一切似乎都可以正常工作。

 tasks = [  # pylint: disable=C0103
    {
        'id': 1,
        'title': 'First',
        'content': u'First task'
    },
    {
        'id': 2,
        'title': 'Second',
        'content': u'Second task'
    }
]
app = Flask(__name__)   

@app.route('/api/v1.0/tasks/', methods=['GET'])
def get_tasks():
    """
    [GET] Retrieves all tasks
    """
    return jsonify({'tasks': tasks})

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

当我运行我的烧瓶应用程序时,这非常有效。当我想将其移动到其他文件时,问题就开始了。我刚刚将get_tasks方法移至 /my_app/views.py 并将声明app = Flask( name )移至 my_app/ init .py 中。当然,我在主 app.py 文件中添加了导入。服务器正常启动,但我无法得到结果。当我将方法移回 app.py 时,它就起作用了。我在这里缺少什么?

编辑

应用程序.py

from my_app import app

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

视图.py

from flask import jsonify
from my_app import app
@app.route('/api/v1.0/tasks/', methods=['GET'])
def get_tasks():
    """
    [GET] Retrieves all tasks
    """
    tasks = [  # pylint: disable=C0103
        {
            'id': 1,
            'title': 'First',
            'content': u'First task'
        },
        {
            'id': 2,
            'title': 'Second',
            'content': u'Second task'
        }
    ]
    return jsonify({'tasks': tasks})
Run Code Online (Sandbox Code Playgroud)

目录结构:

project_name/
--- my_app/
----- __init__.py
----- views.py
--- app.py
Run Code Online (Sandbox Code Playgroud)

编辑2 正如我在评论中提到的,我将所有内容从init .py 移至 app.py 文件中,但它仍然不起作用,但是当我在 app.py 中添加一个额外的导入时,在 app = Flask( name )之后, 有用。导入是

from my_app import views
Run Code Online (Sandbox Code Playgroud)

当我之前尝试添加此导入时,我有循环导入