Reputation: 1111
I do not know how to do properly.
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)
register 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)
I get this error when trying to start:
RuntimeError: application not registered on db instance and no application bound to current context
If I exclude methods=['GET', 'POST', 'DELETE', 'PUT', 'PATCH'], the application is started, but if i try send request http http://0.0.0.0:5000/api/user, obviously, I get the answer:
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
Docs does not give an example of solving the problem
Can you please tell where to find the answer
Upvotes: 2
Views: 526
Reputation: 1111
This works:
blueprint:
# 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)
request: http http://0.0.0.0:5000/api/user
response :
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=0&results_per_page=10>; rel="last"
Link: <http://0.0.0.0:5000/api/user?page=0&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
}
Upvotes: 2