Flask蓝图在没有前缀的情况下不起作用

时间:2017-08-01 17:58:31

标签: python flask

您好我有以下方式构建的Flask应用程序,我的蓝图设置有问题。无论我做什么,他们只能使用url_prefix设置。它目前作为/main/verify工作,但因为它是一个小应用程序,我希望有一个像/verify这样的端点。我设法让它与/路由一起使用有趣,但对于相同的配置,它并不适用于/verify。我现在很无能,我可以忍受它,但我真的很想知道我做错了什么。

以下是代码:

__init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config


db = SQLAlchemy()


def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    db.init_app(app)

    from main import main
    app.register_blueprint(main)

    return app

main/__init__.py

from flask import Blueprint
main = Blueprint('main', __name__, url_prefix='/main')
from . import views

main/views.py

from flask import request, jsonify
from . import main


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


@main.route('/verify')
def verify():
    url = request.args['url']
    query = request.args['query']

    return jsonify({ ... })

1 个答案:

答案 0 :(得分:4)

正如我所见,你没有注册blueprint没有前缀。如果您需要注册没有前缀的端点,则必须创建Blueprint

的新实例
main = Blueprint('main', __name__, url_prefix='/main')
# main endpoints(with prefix /main)...
@main.route('/')
def index_main():
    return "Hello world from /main/"
# routes without any prefix
default = Blueprint('default', __name__)

@default.route('/')
def index():
    return "Hello world from /"

app = Flask(__name__)
app.register_blueprint(main)
app.register_blueprint(default)

希望这有帮助。