DjangoRF-4-普通用户注册

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 = User
        fields = ["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 attrs

    def 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运行代码。(问题已经解决)
在这里插入图片描述
最后进行注册接口调试即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值