Cra*_*igH 4 flask flask-restful
我正在尝试使用 Flask Restful 作为适用于其他蓝图的模式中的蓝图。我不断收到以下错误消息
\n\n我收到以下错误消息
\n\n\n\n\nAttributeError:\'Blueprint\'对象没有属性\'add_resource\'
\n
我的项目设置如下:
\n\n文件夹结构
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 api\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 routes.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 forms.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 home.html\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 manage.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 requirements.txt\nRun Code Online (Sandbox Code Playgroud)\n\n__init__.py
\n\nfrom flask import Flask\nfrom flask_restful import Api\nfrom flask_bootstrap import Bootstrap\nfrom config import config\nbootstrap = Bootstrap()\napi = Api()\n\ndef create_app(config_name):\n app = Flask(__name__)\n app.config.from_object(config[config_name])\n config[config_name].init_app(app)\n\n bootstrap.init_app(app)\n api.init_app(app)\n\n from .main import main as main_blueprint\n from .api import api as api_blueprint\n app.register_blueprint(main_blueprint)\n app.register_blueprint(api_blueprint)\n return app\nRun Code Online (Sandbox Code Playgroud)\n\napi/__init__.py
\n\nfrom flask import Blueprint\n\napi = Blueprint(\'api\', __name__)\n\nfrom . import routes\nRun Code Online (Sandbox Code Playgroud)\n\napi/routes.py
\n\nfrom flask_restful import Resource\nfrom . import api\n\nclass TodoItem(Resource):\n def get(self, id):\n return {\'task\': \'Say "Hello, World!"\'}\n\napi.add_resource(TodoItem, \'/todos/<int:id>\')\nRun Code Online (Sandbox Code Playgroud)\n\n我究竟做错了什么??
\n如果您按照https://flask-restful.readthedocs.io/en/0.3.5/intermediate-usage.html中的说明进行操作
这里的关键点是创建一个 Flask Blueprint 实例并将其传递给 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
Run Code Online (Sandbox Code Playgroud)
另请注意,您不再需要注册api.init_app(app)。
| 归档时间: |
|
| 查看次数: |
16775 次 |
| 最近记录: |