我应该使用哪种Django Rest Framework样式

时间:2017-06-02 14:11:31

标签: django-rest-framework

(我正在使用最新的django / python / DRF)

我的API端点是应用程序内部的。它们与我在系统中的模型一对一不匹配。我已经看到了两种使用API​​视图的技巧。

第一种使用方法,比如我正在使用:

@api_view(['GET', 'POST'])
@authentication_classes([JSONWebTokenAuthentication])
def myApiEndPoint(request):
    """
    This text is the description for this API.
    """

    if request.method == 'GET':
        return Response("ok get", status=status.HTTP_200_OK)
    elif request.method == 'POST':
        return Response("ok post", status=status.HTTP_200_OK)

第二个使用类定义,如DRF文档

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

第二种方式似乎更整洁有序。但是:

  1. 我可以将它用于非特定型号的验证吗?
  2. 如何在此实例中定义每类权限和身份验证类?
  3. 由于

1 个答案:

答案 0 :(得分:0)

    • 根据Serializer(不是ModelSerializer)创建序列化程序,并为字段设置自定义验证
    • 而不是使用ModelViewSet作为基类使用viewsets.GenericViewSet GET创建名为list的方法,而POST创建名为{{1}的方法更多信息请查看viewset docs
  1. 非常简单:
  2. 只需在视图集中定义这些变量:(另请查看authenticationpermissions的文档

    create