Django ou Flask?
from flask_restful import Api
api = Api(app)
from flaskapi.flaskapi import resources
api.add_resource(resources.Home, '/')
api.add_resource(resources.Login, '/login')
api.add_resource(resources.User, '/user')
api.add_resource(resources.Deposit, '/deposit')
api.add_resource(resources.Withdraw, '/withdraw')
api.add_resource(resources.Transfer, '/transfer')
api.add_resource(resources.Statements, '/statements')
from django.urls import path, include
from rest_framework import routers
router = routers.DefaultRouter()
router.register('user_register', views.UserViewSet, base_name='user_register')
router.register('user', views.ProtectedUserViewSet, base_name='user')
router.register('login', views.LoginViewSet, base_name='login')
router.register('operations', views.OperationsViewSet, base_name='operations')
urlpatterns = [
path('', include(router.urls))
]
class User(db.Model, BaseModel):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), nullable=False)
password = db.Column(db.String(100), nullable=False)
doc_number = db.Column(db.String(100), nullable=False)
balance = db.Column(db.Float, default=0.0)
is_active = db.Column(db.Boolean, default=True)
transactions = db.relationship('Transaction', backref='owner')
class Transaction(db.Model, BaseModel):
id = db.Column(db.Integer, primary_key=True)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
value = db.Column(db.Float, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class User(PermissionsMixin, AbstractBaseUser):
email = models.EmailField(unique=True)
doc_number = models.CharField(max_length=100)
balance = models.FloatField(default=0.0)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
class Transaction(models.Model):
timestamp = models.DateTimeField(default=datetime.now)
value = models.FloatField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
@jwt_required
def get(self):
user = _get_current_user()
if not user:
return {'message': 'User not found'}, 404
return {'message': 'Success', 'data': user.to_dict()}, 200
class UserViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
authentication_classes = (TokenAuthentication, )
permission_classes = (IsAuthenticated, )
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my.db'
db = SQLAlchemy(app)
O django possui uma ORM própria bastante poderosa e bem completa.
O flask tem extensões que trabalham junto da ORM SQLalchemy que é fantástica.