Flask 应用程序显示 404

Flask application showing 404

我是 Python 和 Flask 的新手,我需要处理代码库。我在名为 migration

的目录中有以下文件
Name

app
env
__pycache__
requirements.txt
run.py

run.py中,我有以下代码:

from app import app

app.run(debug=True)

app 目录中,我有一个 __init__.py,代码为:

from app.helpers import get_page_display_name, get_page_url_name
# from app import views
from flask import Flask

app = Flask(__name__)

app.config['JSON_SORT_KEYS'] = False
app.jinja_env.globals.update(get_page_display_name=get_page_display_name)
app.jinja_env.globals.update(get_page_url_name=get_page_url_name)

现在我在同一个 app 文件夹中有一个 views.py 文件,它有路由配置和相应的代码,如:

@app.route('/')
def index():
    if 'username' in session:
        return render_template("index.html")
    return redirect(url_for('login'))

我正在尝试 运行 应用程序。我使用了以下命令:

env/Scripts/activate

这已经激活了环境,然后:

$env:FLASK_APP=.\run.py
flask run

这显示了一条类似于 运行ning 在 http://127.0.0.1:5000 上的消息,当我在浏览器中打开 URL 时打印了以下消息:

127.0.0.1 - - [19/Nov/2020 10:23:15] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [19/Nov/2020 10:23:15] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [19/Nov/2020 10:23:16] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [19/Nov/2020 10:23:17] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [19/Nov/2020 10:23:18] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [19/Nov/2020 10:23:18] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [19/Nov/2020 10:23:18] "GET / HTTP/1.1" 404 -

我也试过

$env:FLASK_APP=.\app\views.py
flask run

这也打印了与 运行ning 在同一端口上相同的消息,但打开时,显示的是相同的 404 消息。

我如何运行这个应用程序?我已经检查了文档,但该应用程序的结构略有不同。在此先感谢您的帮助。

您必须在定义 app 之后导入您的视图文件。我建议你使用 blueprint.

编辑

views.py

from flask import Blueprint

bp = Blueprint('test', __name__, url_prefix='/')

@bp.route('/')
def index():
    if 'username' in session:
        return render_template("index.html")
    return redirect(url_for('login'))

__init__py

from app.helpers import get_page_display_name, get_page_url_name
from views import bp
from flask import Flask

app = Flask(__name__)
app.register_blueprint(bp)
app.config['JSON_SORT_KEYS'] = False
app.jinja_env.globals.update(get_page_display_name=get_page_display_name)
app.jinja_env.globals.update(get_page_url_name=get_page_url_name)