gpt4 book ai didi

flask - 在大型应用程序中使用 Flask Restful 作为蓝图

转载 作者:行者123 更新时间:2023-12-03 16:00:44 27 4
gpt4 key购买 nike

我正在尝试使用 Flask restful 作为适用于其他蓝图的模式中的蓝图。我不断收到以下错误消息

我收到以下错误消息

AttributeError: 'Blueprint' object has no attribute 'add_resource'



我的项目设置如下:

文件夹结构
├── app
│   ├── __init__.py
│   ├── api
│   │   ├── __init__.py
│   │   └── routes.py
│   ├── main
│   │   ├── __init__.py
│   │   ├── forms.py
│   │   └── views.py
│   └── templates
│   ├── base.html
│   └── home.html
├── config.py
├── manage.py
└── requirements.txt

__init__.py
from flask import Flask
from flask_restful import Api
from flask_bootstrap import Bootstrap
from config import config
bootstrap = Bootstrap()
api = Api()

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

bootstrap.init_app(app)
api.init_app(app)

from .main import main as main_blueprint
from .api import api as api_blueprint
app.register_blueprint(main_blueprint)
app.register_blueprint(api_blueprint)
return app

api/__init__.py
from flask import Blueprint

api = Blueprint('api', __name__)

from . import routes

api/routes.py
from flask_restful import Resource
from . import api

class TodoItem(Resource):
def get(self, id):
return {'task': 'Say "Hello, World!"'}

api.add_resource(TodoItem, '/todos/<int:id>')

我究竟做错了什么??

最佳答案

如果您按照 https://flask-restful.readthedocs.io/en/0.3.5/intermediate-usage.html 中的说明进行操作
这里的关键点是创建一个 Flask 蓝图实例并将其传递给flask-restfuls 的 Api 类的新实例。
最后,确保在 create_app 函数中注册了flask-restful api 蓝图:app.register_blueprint(api_bp)

from flask import Flask, Blueprint
from flask_restful import Api
from flask_bootstrap import Bootstrap
from config import config

bootstrap = Bootstrap()
api_bp = Blueprint('api', __name__)
api = Api(api_bp)

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

bootstrap.init_app(app)

from .users import main as users_blueprint
from .blogs import main as blogs_blueprint

# blueprints for blogs & users
app.register_blueprint(users_blueprint)
app.register_blueprint(blogs_blueprint)
app.register_blueprint(api_bp)

return app
另请注意,您不需要注册 api.init_app(app)了。

关于flask - 在大型应用程序中使用 Flask Restful 作为蓝图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448618/

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