У меня есть API регистрации, но я хочу иметь возможность загружать дополнительное изображение при регистрации пользователя.В настоящее время я получаю сообщение об ошибке: «TypeError: 'photo' - недопустимый аргумент ключевого слова для этой функции».Вот мой код:
# serializers.py
class RegisterSerializer(serializers.ModelSerializer):
first_name = serializers.CharField(required=True)
last_name = serializers.CharField(required=True)
email = serializers.EmailField(required=True)
photo = serializers.ImageField() # doesn't work currently
class Meta:
model = User
fields = ('id', 'username', 'first_name',
'last_name', 'email', 'photo', 'password')
extra_kwargs = {'password': {'write_only': True, 'min_length': 5}}
def create(self, validated_data):
user = super(RegisterSerializer, self).create(validated_data)
user.set_password(validated_data['password'])
user.save()
return user
# api.py
class RegisterAPIView(CreateAPIView):
serializer_class = RegisterSerializer
permission_classes = [AllowAny]
parser_class = (FileUploadParser,) # not sure if this is needed
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
token = Token.objects.create(user=serializer.instance)
token_data = {"token": token.key}
return Response({**serializer.data, **token_data})
# urls.py
urlpatterns = [
path('api/auth/register', RegisterAPIView.as_view()),
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")