Django rest framework 如何自定义RegisterSerializer以保存新用户的图像
我正在使用django rest auth,我想添加对我自己的用户模型的注册以及保存用户图像的可能性。所以我添加了allauth并创建了我自己的RegisterSerializer,正如文档中提到的那样。只要我不引入ImageField来保存用户图像,它就可以工作 这是我的自定义序列化程序Django rest framework 如何自定义RegisterSerializer以保存新用户的图像,django-rest-framework,django-rest-auth,Django Rest Framework,Django Rest Auth,我正在使用django rest auth,我想添加对我自己的用户模型的注册以及保存用户图像的可能性。所以我添加了allauth并创建了我自己的RegisterSerializer,正如文档中提到的那样。只要我不引入ImageField来保存用户图像,它就可以工作 这是我的自定义序列化程序 class MyRegisterSerializer(serializers.Serializer): username = serializers.CharField( max_le
class MyRegisterSerializer(serializers.Serializer):
username = serializers.CharField(
max_length=get_username_max_length(),
min_length=allauth_settings.USERNAME_MIN_LENGTH,
required=allauth_settings.USERNAME_REQUIRED,
)
email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
password1 = serializers.CharField(write_only=True)
password2 = serializers.CharField(write_only=True)
first_name = serializers.CharField(write_only=True)
last_name = serializers.CharField(write_only=True)
image = serializers.ImageField(max_length=None, use_url=False)
def validate_username(self, username):
username = get_adapter().clean_username(username)
return username
def validate_email(self, email):
email = get_adapter().clean_email(email)
if allauth_settings.UNIQUE_EMAIL:
if email and email_address_exists(email):
raise serializers.ValidationError(
_("A user is already registered with this e-mail address.")
)
return email
def validate_image(self, image):
image = get_adapter().clean_image(image)
def validate_password1(self, password):
return get_adapter().clean_password(password)
def validate(self, data):
if data["password1"] != data["password2"]:
raise serializers.ValidationError(
_("The two password fields didn't match.")
)
return data
def custom_signup(self, request, user):
pass
def get_cleaned_data(self):
return {
"username": self.validated_data.get("username", ""),
"password1": self.validated_data.get("password1", ""),
"email": self.validated_data.get("email", ""),
"first_name": self.validated_data.get("first_name", ""),
"last_name": self.validated_data.get("last_name", ""),
"image": self.validated_data.get("image", ""),
}
def save(self, request):
adapter = get_adapter()
user = adapter.new_user(request)
self.cleaned_data = self.get_cleaned_data()
adapter.save_user(request, user, self)
self.custom_signup(request, user)
setup_user_email(request, user, [])
return user
这是我的用户模型
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=30, unique=True)
email = models.EmailField(_("email address"), unique=True)
first_name = models.CharField(max_length=30, blank=True)
USERNAME_FIELD = "username"
REQUIRED_FIELDS = []
objects = UserManager()
last_name = models.CharField(max_length=30, blank=True)
image = models.ImageField(upload_to="app/static/app/", blank=True)
is_superuser = models.BooleanField(_("superuser"), default=False, blank=True)
is_staff = models.BooleanField(_("staff"), default=False, blank=True)
is_active = models.BooleanField(_("staff"), default=True)
def __str__(self):
return "ID:" + str(self.pk) + " User:" + self.username
当我尝试注册一个图像时,我得到一个
错误请求:/rest身份验证/注册/
任何想法都将不胜感激。提前谢谢