1.编写模型类
class User(models.Model):
username = models.CharField(max_length=16,verbose_name='账号')
password = models.CharField(max_length=32,verbose_name='密码')
mobile =models.CharField(max_length=11,verbose_name='电话')
is_active = models.BooleanField(default=False,verbose_name='激活状态') #是否激活
class Meta:
verbose_name = '用户表'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
2.编写路由
path('username/<str:name>/',views.NameView.as_view()),
path('register/',views.Register.as_view()),
3.根据路由编写视图
用户名视图:
class NameView(APIView):
def get(self,request,name):
res = r'[a-zA-Z][a-zA-Z0-9]{5,15}$'
res1 = re.findall(res,name)
if not res1:
return Response({'code':400,'msg':"用户名必须为字母开头6-16位的数字字母组合"})
user_count = User.objects.filter(username=name).count()
if not user_count:
return Response({'code': 200, 'msg': "ok"})
else:
return Response({'code':400,'msg':'用户名已存在'})
注册视图:
class Register(APIView):
def post(self,request):
data = request.data
ser = UserSerializer(data=data)
ve_res = ser.is_valid()
if not ve_res:
return Response({
'code':-12,
'msg':ser.errors
})
ser.save()
return Response({'code':200,'msg':'注册成功!'})
注:这里序列化器里面对密码进行加密
序列化里面重写validate_password这个方法,注意这里的password要跟模型类里面字段tongm,并且还要和vue传过来的字段同名
序列化如图:
这样一整个登录注册就完成啦