1、注册接口:/users/register/
1.1还是users的model模块,
1.2序列化,在users下进行创建
class UserRegisterSerializer(serializers.ModelSerializer):password_confirm = serializers.CharField(label='确认密码',help_text='确认密码',min_length=6,max_length=20,error_messages={"min_length":'仅6-20字符',"max_length":"仅6-20字符"},write_only=True)class Meta:model = Userfields = ["id", "username", "password", "password_confirm", 'email', "mobile"]extra_kwargs = {'username': {'label': '用户名','help_text': '用户名','min_length': 6,'max_length': 20,'error_messages': {'min_length': '仅允许6-20个字符的用户名','max_length': '仅允许6-20个字符的用户名',},},'password': {'label': '密码','help_text': '密码','min_length': 6,'max_length': 20,'write_only': True,'error_messages': {'min_length': '仅允许6-20个字符的密码','max_length': '仅允许6-20个字符的密码',},},'email': {'label': '邮箱','help_text': '邮箱','required': True,'allow_blank': True,'validators':[UniqueValidator(queryset=User.objects.all(),message='此邮箱已注册')]}}def validate_password_confirm(self, value):if value != self.initial_data['password']:raise serializers.ValidationError('两次密码不一样')return value# .validationError# 方法同上# def validate(self, attrs):# if attrs['password'] != attrs['password_confirm']:# raise serializers.ValidationError('两次密码不一样')# return attrsdef create(self, validated_data):validated_data.pop('password_confirm')# 注意调用create_user方法来创建用户,会对密码进行加密# 如果是create方法的话,会没有密码加密# #原来的模型中没有这个字段不进行删除pop的话,会报错return User.objects.create_user(**validated_data)
1.3进行试图
class UserRegisterView(generics.CreateAPIView):
serializer_class = UserRegisterSerializer
1.4添加urls
path(‘users/register/’, views.UserRegisterView.as_view(), name=‘register’),
1.5运行代码。(问题已经解决)
最后进行注册接口调试即可。