smorest_crud.view module¶
-
class
smorest_crud.view.CRUDView[source]¶ Bases:
flask.views.MethodViewBase class for collection and resource views.
This works like Flask MethodView; python methods are named after HTTP verbs.
-
access_checks_enabled: bool = True¶ Whether or not to apply access checks to models.
Requires CRUD_ACCESS_CHECKS_ENABLED configuration to be enabled.
-
decorators= [<function jwt_required>]¶ List of decorators to apply to view functions.
Applies jwt_required by default to required authenticated requests.
-
model: flask_sqlalchemy.model.Model¶ SQLAlchemy model we are providing CRUD services for.
-
-
class
smorest_crud.view.CollectionView[source]¶ Bases:
smorest_crud.view.CRUDViewAPI view that can manage listing items in a collection or creating a new item.
Example:
from flask_smorest import Blueprint from smorest_crud import CollectionView pet_blp = Blueprint("pets", "pets", url_prefix="/pet") @pet_blp.route("") class PetCollection(CollectionView): model = Pet prefetch = [Pet.human, (Pet.human, Human.cars)] # joinedload access_checks_enabled = False create_enabled = True list_enabled = True @pet_blp.response(PetSchema(many=True)) def get(self): query = super().get() return query.filter_by(name='mischa') @pet_blp.arguments(PetSchema) @pet_blp.response(PetSchema(many=True)) def post(self, args): return super().post(args)
-
create_enabled: bool = False¶ Enable POST.
-
list_enabled: bool = False¶ Enable GET.
-
methods= {'GET', 'POST'}¶
-
model: flask_sqlalchemy.model.Model¶ SQLAlchemy model we are providing CRUD services for.
-
-
class
smorest_crud.view.ResourceView[source]¶ Bases:
smorest_crud.view.CRUDViewOperations to perform on an item, identified in the URL route by a key.
GET /pet/42 – Fetch pet 42.
PATCH /pet/42 – Update pet 42.
DELETE /pet/42 – Delete pet 42.
Example:
from flask_smorest import Blueprint from smorest_crud import ResourceView pet_blp = Blueprint("pets", "pets", url_prefix="/pet") @pet_blp.route("/<int:pk>") class PetResource(ResourceView): model = Pet access_checks_enabled = True get_enabled = True update_enabled = True delete_enabled = True @pet_blp.response(PetSchema) def get(self, pk): return super().get(pk) @pet_blp.arguments(PetSchema) @pet_blp.response(PetSchema) def patch(self, args, pk): return super().patch(args, pk) @pet_blp.response(PetSchema) def delete(self, pk): return super().delete(pk)
-
delete_enabled: bool = False¶ Enable DELETE.
-
get(pk)[source]¶ Retreieve model by primary key.
- Parameters
pk – Primary key identifier.
- Return type
BaseQuery
-
get_enabled: bool = False¶ Enable GET.
-
methods= {'DELETE', 'GET', 'PATCH'}¶
-
model: flask_sqlalchemy.model.Model¶ SQLAlchemy model we are providing CRUD services for.
-
patch(args=None, pk=None)[source]¶ Update model.
- Parameters
args – Deserialized request model args.
pk – Primary key identifier.
- Return type
BaseQuery- Returns
Updated model.
-
update_enabled: bool = False¶ Enable PATCH.
-