文章目录
内容介绍
小伙伴们熟知以下的两种模式
- MVC模式[Model-View-Controller(模型-视图-控制器) ]
- MVT模式[Model-View-Template(模型-视图-模版)]
两者中提到 View 视图是提供接口服务和逻辑的代码。
例如在 Django 项目中经常会定义各种
class UserViewSet(...):
def user(request, *args, **kwargs):
都是后端服务定义的视图类或者函数,在URL对象中注册便实现一个逻辑 API接口。
APIView
Django框架中定义一个试图类的时候仅仅需要继承就可以使用各种请求方法,在class中加入对应的方法即可:
from rest_framework import views, response, status
class Medusa(views.APIView):
def get(self, request, *args, **kwargs):
return response.Response({
'detail': 'get'}, status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs):
return response.Response({
'detail': 'post'}, status=status.HTTP_201_CREATED)
def delete(self, request, *args, **kwargs):
return response.Response({
'detail': 'delete'}, status=status.HTTP_204_NO_CONTENT)
def put(self, request, *args, **kwargs):
return response.Response({
'detail': 'put'}, status=status.HTTP_200_OK)
只要视图中定义后返回一个Response 对象即可。
使用rest-framework需要使用到APIView的继承父类。
api_view 装饰器
根据个人习惯,是否使用装饰器修饰函数方法。
from rest_framework.decorators import api_view
@api_view(['GET'])
def medusa_view(request):
...
@api_view(['POST'])
def medusa_view(request):
...
@api_view(['PUT'])
def medusa_view(request):
...
@api_view(['DELETE'])
def medusa_view(request):
...