all basic是一个简单的django应用程序,可以添加一些基本功能来使用drf api。
django-allbasic的Python项目详细描述
全部基本
all basic是一个简单的django应用程序,可以添加一些基本功能来使用drf api。它包括分离业务逻辑和来自支持嵌套数据的用户请求和验证的嵌套数据的应用程序。
快速启动
将allbasic
添加到INSTALLED_APPS
设置中,如下所示:
INSTALLED_APPS = [
...
'allbasic',
]
创建一个应用程序(名称是什么)并创建几个文件:
myapp/
domains.py
presentations.py
validations.py
在你的validations.py
:
from allbasic.validations import BaseValidation
class ValidationUserDetailUpdate(BaseValidation):
def schema(self):
return {
'last_name': {
'type': 'string',
'required': True,
'empty': False
},
'first_name': {
'type': 'string',
'required': True,
'empty': False
}
}
在你的domains.py
:
from allbasic.domains import BaseDomain
class DomainUserUpdate(BaseDomain):
@transaction.atomic()
def apply(self):
data = self.context.get('data')
user = self.context.get('user')
user.first_name = data.get('first_name', user.first_name)
user.last_name = data.get('last_name', user.last_name)
return user.save()
在你的presentations.py
:
from allbasic.presentations import BasePresentation
class UserDetailPresentation(BasePresentation):
def present(self):
user = self.context.get('user')
return {
'id': user.pk,
'username': user.username,
'email': user.email,
'last_name': user.last_name,
'first_name': user.first_name
}
在你的views.py
:
from allbasic.domains import ContextDomain
from allbasic.presentations import ContextPresentation
from allbasic.validations import ContextValidation
class UserDetailView(APIView):
authentication_classes = (
JSONWebTokenAuthentication,
SessionAuthentication,
BasicAuthentication
)
permission_classes = (IsAuthenticated,)
def put(self, request):
validation = ContextValidation(ValidationUserDetailUpdate(request.data))
if validation.validate():
ContextDomain(DomainUserUpdate(context={'data': validation.data, 'user': request.user})).do_apply()
presentation = ContextPresentation(UserDetailPresentation(context={'user': request.user}))
return Response(presentation.do_present())
return Response(validation.errors, status=status.HTTP_400_BAD_REQUEST)