Django - Allauth - 如何向注册添加额外的 API 参数
Django - Allauth - How to add additional API parameters to registration
我正在使用 Django all-auth through Django rest-auth,我想扩展注册功能以匹配我的自定义用户对象。给定以下用户模型:
class Profile(AbstractUser):
email = models.EmailField(unique=True)
username = models.CharField(max_length=40, unique=True, blank=True)
first_name = models.CharField(max_length=40, blank=True)
last_name = models.CharField(max_length=40, blank=True)
如何让 allauth 通过 API 调用然后 clean/store 来接收这些作为参数。换句话说,我想要做的就是用这样的主体调用 /rest-auth/registration/
端点;
{
"username": "foo",
"email": "bar@mail.com",
"password1": "fooBar!@",
"password2": "fooBar!@",
"first_name": "first",
"last_name": "last"
}
并将 first_name
和 last_name
存储为配置文件对象。同样,我希望能够通过 API 而不是通过表单来做到这一点。
环境详情:
Django==1.11.3
django-allauth==0.33.0
django-environ==0.4.4
django-rest-auth==0.9.1
django-storages==1.6.5
django-taggit==0.22.1
djangorestframework==3.6.4
...
$ python --version
Python 2.7.11
尝试像这样覆盖您的注册序列化程序:
class CustomRegisterSerializer(RegisterSerializer):
first_name = serializers.CharField(max_length=255)
last_name = serializers.CharField(max_length=255)
def get_cleaned_data(self):
validated_data = super(CustomRegisterSerializer, self).get_cleaned_data()
validated_data.update({
'first_name': self.validated_data.get('first_name', ''),
'last_name': self.validated_data.get('last_name', '')
})
return validated_data
然后将此序列化器作为 REGISTER_SERIALIZER
添加到您的设置中(查看文档了解详细信息)
我正在使用 Django all-auth through Django rest-auth,我想扩展注册功能以匹配我的自定义用户对象。给定以下用户模型:
class Profile(AbstractUser):
email = models.EmailField(unique=True)
username = models.CharField(max_length=40, unique=True, blank=True)
first_name = models.CharField(max_length=40, blank=True)
last_name = models.CharField(max_length=40, blank=True)
如何让 allauth 通过 API 调用然后 clean/store 来接收这些作为参数。换句话说,我想要做的就是用这样的主体调用 /rest-auth/registration/
端点;
{
"username": "foo",
"email": "bar@mail.com",
"password1": "fooBar!@",
"password2": "fooBar!@",
"first_name": "first",
"last_name": "last"
}
并将 first_name
和 last_name
存储为配置文件对象。同样,我希望能够通过 API 而不是通过表单来做到这一点。
环境详情:
Django==1.11.3
django-allauth==0.33.0
django-environ==0.4.4
django-rest-auth==0.9.1
django-storages==1.6.5
django-taggit==0.22.1
djangorestframework==3.6.4
...
$ python --version
Python 2.7.11
尝试像这样覆盖您的注册序列化程序:
class CustomRegisterSerializer(RegisterSerializer):
first_name = serializers.CharField(max_length=255)
last_name = serializers.CharField(max_length=255)
def get_cleaned_data(self):
validated_data = super(CustomRegisterSerializer, self).get_cleaned_data()
validated_data.update({
'first_name': self.validated_data.get('first_name', ''),
'last_name': self.validated_data.get('last_name', '')
})
return validated_data
然后将此序列化器作为 REGISTER_SERIALIZER
添加到您的设置中(查看文档了解详细信息)