这是返回的信息,

这是前端的代码
isRegister () {
var that = this
register({
password: that.password,
pwd2: that.rePassword,
username: that.userName,
name: that.name,
email: that.email,
mobile: that.phone,
desc: that.desc
}).then((response) => {
console.log(response.data)
// 假如以下三行不注释掉,则会注册完成之后自动登录
cookie.setCookie('name', response.data.username, 7)
cookie.setCookie('token', response.data.token, 7)
that.$store.dispatch('setInfo')
this.$router.push({ name: 'SignIn' })
}).catch(function (error) {
console.log(error)
})
}后端代码是:
serializers.py
class RegSerializers(serializers.ModelSerializer):
pwd2 = serializers.CharField(
help_text="重复密码",
label="重复密码",
required=True,
style={'input_type': 'password'},
max_length=20,
min_length=6,
allow_blank=False,
error_messages={
"blank": "请再次输入密码",
"required": "请再次输入密码",
"min_length": "请确保密码长度不小于6",
"max_length": "请确保密码长度不大于20"
},
write_only=True)
password = serializers.CharField(
help_text="输入密码",
label="输入密码",
style={'input_type': 'password'},
max_length=20,
min_length=6,
write_only=True,
allow_blank=False,
error_messages={
"blank": "请输入密码",
"required": "请输入密码",
"min_length": "请确保密码长度不小于6",
"max_length": "请确保密码长度不大于20"
})
username = serializers.CharField(
label="用户名",
help_text="用户名",
required=True,
allow_blank=False,
error_messages={
'blank': '请输入用户名',
'required': "请输入用户名"
},
validators=[
UniqueValidator(queryset=User.objects.all(), message="用户已经存在")
])
name = serializers.CharField(
label="姓名",
help_text="姓名",
required=True,
error_messages={
'blank': '请输入姓名',
'required': "请输入姓名"
},
allow_blank=False,
)
mobile = serializers.CharField(
label="手机",
help_text="手机",
required=True,
error_messages={
'required': "请输入手机号",
'blank': '请输入手机号'
},
allow_blank=False,
)
def validate(self, attrs):
# 校验两次输入的密码是否正确
password = attrs['password']
pwd2 = attrs['pwd2']
mobile = attrs['mobile']
if not re.match(REGEX_MOBILE, mobile):
raise serializers.ValidationError({'mobile': "手机号码非法"})
if password != pwd2:
raise serializers.ValidationError({'password_error': '两次输入的密码不一样'})
del attrs['pwd2']
return attrs
class Meta:
model = User
fields = ('username', 'password', 'pwd2', 'name', 'mobile', 'email',
'desc')views.py里面是:
class RegList(CreateModelMixin, viewsets.GenericViewSet): queryset = User.objects.all() serializer_class = RegSerializers def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = self.perform_create(serializer) # 生成jwt的token re_dict = serializer.data payload = jwt_payload_handler(user) re_dict['token'] = jwt_encode_handler(payload) re_dict['name'] = user.name if user.name else user.username headers = self.get_success_headers(serializer.data) return Response(re_dict, status=status.HTTP_201_CREATED, headers=headers) def perform_create(self, serializer): return serializer.save()
密码加密我使用的是信号的方式
我现在想取得错误的具体信息,但是按照老师的代码返回不了,用课程的代码测试时,发现课程的代码是可以实现的。
Django REST framework课程视频,RESTFul API前后端分离开发
了解课程