Ожидается, что представление будет вызываться с ключевым словом URL "pk" добавлено "pk" в urls.py

Получаем ошибку:

AssertionError at /update_profile/ Expected view UpdateProfileView to be called with a URL keyword argument named "pk". Fix your URL conf, or set the .lookup_fieldattribute on the view correctly.

когда я пытаюсь обновить профиль пользователя.

Вот мой urls.py

   path('update_profile/', views.UpdateProfileView.as_view(), name='update_profile'),

Мой UpdateProfileView:

class UpdateProfileView(generics.UpdateAPIView):
# permission_classes = [permissions.IsAuthenticated]
# authentication_classes = (TokenAuthentication,)
# lookup_field = 'username'
queryset = User.objects.all()
serializer_class = UpdateUserSerializer

@action(detail=True, methods=['put'])
def perform_update(self, serializer):
    serializer.save(user=self.request.user.id)

UpdateUserSerializer

class UpdateUserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(required=True)

    class Meta:
        model = User
        #add 'city', 'country', 'bio'
        fields = ['username', 'email', 'password', 'first_name', 'last_name']

        def validate_email(self, value):
            user = self.context['request'].user
            if User.objects.exclude(pk=user.pk).filter(email=value).exists():
                raise serializers.ValidationError({"email": "This email is already in use."})
            return value

        def validate_username(self, value):
            user = self.context['request'].user
            if User.objects.exclude(pk=user.pk).filter(username=value).exists():
                raise serializers.ValidationError({"username": "This username is already in use."})
            return value

        def update(self, instance, validated_data):
            user = self.context['request'].user

            if user.pk != instance.pk:
                raise serializers.ValidationError({"authorize": "You don't have permission for this user."})

            instance.first_name = validated_data['first_name']
            instance.last_name = validated_data['last_name']
            instance.email = validated_data['email']
            instance.username = validated_data['username']
            # instance.profile.city = validated_data['city']
            # instance.profile.country = validated_data['country']
            # instance.profile.bio = validated_data['bio']

            instance.save()

            return instance

Я добавил аргумент URL pk в свой urls.py

path('update_profile/<int:pk>', views.UpdateProfileView.as_view(), name='update_profile')

Возвращается ошибка page not found at update_profile

Вернуться на верх