Как инициализировать restless как схему flask

#flask #flask-sqlalchemy #flask-restless

#flask #flask-sqlalchemy #flask-restless

Вопрос:

Я не знаю, как сделать правильно.

blueprint api:

 # coding: utf-8
from flask import Blueprint, render_template
from ..models import User
from flask_restless import APIManager

manager = APIManager()

manager.create_api(User, url_prefix='/api', methods=['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])

bp = Blueprint('api', __name__)
  

__init__.py :

 def register_db(app):
    from .models import db

    db.init_app(app)

def register_api(app):
    from .controllers.api import manager

    manager.init_app(app, flask_sqlalchemy_db=db)
  

зарегистрировать blueprint’s:

 def register_routes(app):
    from . import controllers
    from flask.blueprints import Blueprint
for module in _import_submodules_from_package(controllers):
    bp = getattr(module, 'bp')
    if bp and isinstance(bp, Blueprint):
        app.register_blueprint(bp)
  

Я получаю эту ошибку при попытке запустить:

Ошибка RuntimeError: приложение не зарегистрировано в экземпляре db и не привязано к текущему контексту

Если я исключу методы =[‘GET’, ‘POST’, ‘DELETE’, ‘PUT’, ‘PATCH’], приложение запустится, но если я попытаюсь отправить запрос httphttp://0.0.0.0:5000/api/user , очевидно, я получаю ответ:

 HTTP/1.0 500 INTERNAL SERVER ERROR
Content-Length: 291
Content-Type: text/html
Date: Thu, 20 Oct 2016 15:33:52 GMT
Server: Werkzeug/0.11.11 Python/3.5.2
  

В документах не приводится пример решения проблемы

Не могли бы вы, пожалуйста, сказать, где найти ответ

Ответ №1:

Это работает:

план:

 # coding: utf-8
from flask import Blueprint, render_template
from flask_restless import APIManager
from ..models import db


bp = Blueprint('api', __name__)

manager = APIManager(flask_sqlalchemy_db=db)
  

init.py :

 def register_api(app):
    """Register api."""
    from .controllers.api import manager
    from .models import User

    manager.init_app(app)
    manager.create_api(User, app=app)
  

запрос: http http://0.0.0.0:5000/api/user

ответ :

 HTTP/1.0 200 OK
Content-Length: 72
Content-Type: application/json
Content-Type: application/json
Date: Thu, 20 Oct 2016 18:50:04 GMT
Link: <http://0.0.0.0:5000/api/user?page=0amp;results_per_page=10>; rel="last"
Link: <http://0.0.0.0:5000/api/user?page=0amp;results_per_page=10>; rel="last"
Server: Werkzeug/0.11.11 Python/3.5.2
Vary: Accept

{
  "num_results": 0,
  "objects": [],
  "page": 1,
  "total_pages": 0
}