DRF не может авторизовать аккаунт через токен, всегда получая анонимный объект пользователя
Я использую TokenAuthentication и у меня есть профиль модели для пользователей:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
participant = models.CharField(max_length=255)
title = models.CharField(max_length=100)
И просмотр для создания профиля:
class ProfileView(LoggingMixin, GenericAPIView):
serializer_class = ProfileSerializer
queryset = Profile.objects.all()
def get(self, request, format=None):
"""
Return user's profile information
"""
serializer = ProfileSerializer(queryset)
return Response(serializer.data)
def post(self, request, format=None):
"""
Create new profile
"""
data = request.data.copy()
data['user'] = request.user.id
print data
serializer = self.serializer_class(data=data, context={"request":request})
print serializer
if serializer.is_valid():
print 1
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Мне нужно создать профиль объекта после регистрации. Я отправляю данные с веб-страницы через jquery:
$.ajax({
headers: {"Authorization": "Token " + data.key},
type: "POST",
url: "http://127.0.0.1:8002/v1/profiles/",
data: JSON.stringify(profileDataToSend),
success: function(){
console.log('Success! 2');
},
dataType: "json",
contentType : "application/json"
});
Регистрация работает нормально, токен создается, но когда я пытаюсь отправить этот запрос на создание профиля, связанного с зарегистрированным пользователем, я каждый раз получаю анонимный объект пользователя. В моих настройках я устанавливаю:
DEFAULT_AUTHENTICATION_CLASSES = "rest_framework.authentication.TokenAuthentication"
Но все же не могу понять, почему я не могу войти в систему с моим запросом. Где я делаю ошибку?
1 ответ
Я идиот. Анонимный пользователь был потому что я не установил
authentication_classes = (TokenAuthentication,)
вот почему.