flask app为非根路径提供404

时间:2017-12-27 08:26:10

标签: python flask

我想试试烧瓶。使用烧瓶0.12,python 3.4
我创建了类似于的项目树: https://damyanon.net/post/flask-series-structure/

controllers.py代码:

from flask import Blueprint
import functools, operator

main = Blueprint('main', __name__)

@main.route('/')
def index():
  return "Main world"

@main.route('/foo')
def foo():
  return "this is foo"

当我运行应用时, 我得到404 for / foo路线,但'/'没关系

    * Serving Flask app "run"
    * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    127.0.0.1 - - [27/Dec/2017 15:19:21] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [27/Dec/2017 15:19:25] "GET /foo HTTP/1.1" 404 -

有任何线索吗? 感谢。

编辑: 根据要求,这里我如何在中注册 blueprint flask_app /本地服务/的初始化的.py。不确定应用程序 factory 。我还是新手。我用 localservice 替换书架,而不是使用 admin

from flask import Flask
from localservice.main.controllers import main
app = Flask(__name__)
app.register_blueprint(main, url_prefix='/')

2 个答案:

答案 0 :(得分:0)

我正在遵循相同的教程,同样的错误也发生在我身上。我坚持了很长一段时间后终于弄明白了。

所以看起来教程中有错误。您无法使用' /'进行注册。 app.register_blueprint(main, url_prefix='/')

这是教程人员编写代码的实际github codebase

如果您查看代码并提交历史记录,他就会更改url_prefix来自' /'到主要的'。更改您的url_prefix,代码应该有效。

答案 1 :(得分:-1)

如果您不坚持遵循该教程,Flask Quickstart文档中的代码可以正常工作

from flask import Flask


app = Flask(__name__)


@app.route('/')
def index():
    return "Main world"


@app.route('/foo')
def foo():
    return "this is foo"


if __name__ == '__main__':
    app.run()