Я пытаюсь создать REST API и застреваю при регистрации пользователя: в основном мне нужно иметь токен доступа, прежде чем я зарегистрируюсь.
Это представление:
class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer
    def metadata(self, request):
        """
        Don't include the view description in OPTIONS responses.
        """
        data = super(UserViewSet, self).metadata(request)
        return data
    def create(self, request):
        serializer = self.get_serializer(data=request.DATA, files=request.FILES)
        if serializer.is_valid():
            self.pre_save(serializer.object)
            self.object = serializer.save(force_insert=True)
            self.post_save(self.object, created=True)
            self.object.set_password(self.object.password)
            self.object.save()
            headers = self.get_success_headers(serializer.data)
            return Response(serializer.data, status=status.HTTP_201_CREATED,
                            headers=headers)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Это обходной путь:
@api_view(['POST'])
@permission_classes((AllowAny,))
@csrf_exempt
def create_auth(request, format=None):
    data = JSONParser().parse(request)
    serialized = UserSerializer(data=data)
    if serialized.is_valid():
        user = User.objects.create_user(
            serialized.init_data['email'],
            serialized.init_data['username'],
            serialized.init_data['password'],
        )
        user.groups = serialized.init_data['groups']
        user.save()
        serialized_user = UserSerializer(user)
        return Response(serialized_user.data, status=status.HTTP_201_CREATED, headers={"Access-Control-Allow-Origin": "http://127.0.0.1:8000/"})
    else:
        return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST, headers={"Access-Control-Allow-Origin": "http://127.0.0.1:8000/"})
Мой вопрос: как я могу указать в UserViewSet, что для создания я не требую учетных данных? Или указать собственный метод проверки подлинности? Я не хочу изменять классы проверки подлинности/разрешения для всего вида.
Спасибо, Adi
ИЗМЕНИТЬ для уточнения: незарегистрированным пользователям должно быть разрешено регистрировать данные POST, и им не разрешается ничего другого. Аутентифицированные пользователи могут получить список пользователей и обновить свой собственный профиль... это поведение по умолчанию. Вот почему AllowAny имеет не вариант. На мой взгляд, подходящим местом для этого является функция create, но я не понимаю, что я должен отменить.