Я завершил свой проект в социальных сетях и установил опцию выхода из системы
Между тем я наткнулся на приложение django-rest-auth и попытался его использовать, но позже решил сделать это сам, удалил его из settings.py и urls.py и использовал «pip uninstall django-rest-auth», чтобы очистить вещи ,
Теперь, когда я пытаюсь создать нового пользователя, он выдает мне эту ошибку:
RecursionError в / profile /
максимальная глубина рекурсии превышена при вызове объекта Python
models.py
class Profile(models.Model):
user = models.OneToOneField(User,related_name='profile',on_delete=models.CASCADE)
location = models.CharField(max_length=30,blank=True)
friends_count = models.PositiveIntegerField(default=0)
profile_pic = models.FileField(upload_to='profile_pics/',blank=False,null=True)
def natural_key(self):
return (self.user.username,)
views.py:
class UserCreateAPIViewSet(viewsets.ModelViewSet):
""""A View which handles Creating and Updating User Profile"""
serializer_class = UserProfileCreateSerializer
queryset = User.objects.all()
authentication_classes = (TokenAuthentication,)
permission_classes = (permissions.UpdateOwnProfile,)
filter_backends = (filters.SearchFilter,)
search_fields = ('username','email',)
urls.py:
router.register(r'profile',views.UserCreateAPIViewSet)
serializers.py:
class UserProfileCreateSerializer(serializers.ModelSerializer):
""""A serializer for user data request"""
location = serializers.CharField(source='profile.location')
friends_count = serializers.IntegerField(source='profile.friends_count',read_only=True)
profile_pic = serializers.FileField(source='profile.profile_pic',allow_empty_file=True,allow_null=True)
class Meta:
model = User
fields = (
'pk',
'username',
'email',
'password',
'location',
'friends_count',
'profile_pic',
)
extra_kwargs = {
'password':{'write_only':True},
'friends_count':{'read_only':True},
}
def create(self, validated_data):
""""Create and return a new User"""
user = User(
email = validated_data['email'],
username = validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user