#1-先建表--创建创建用户-角色-权限表
#注册使用md5加密,可以写入tools.py
import hashlib
def md5(s):
'''md5'''
m = hashlib.md5(s.encode())
return m.hexdigest()
### models.py ###
class User(BaseModel): name = models.CharField(max_length=200,verbose_name='名字') phone = models.CharField(max_length=11,verbose_name='手机号') password = models.CharField(max_length=200,verbose_name='密码')
@staticmethod def mack_password(row_password): '''row_password:原始密码''' tmp_password = '%s%s' %(row_password,SECRET_KEY) md5_password = md5(tmp_password) return md5_password def check_password(self,row_password): return self.mack_password(row_password) == self.password def set_password(self,row_password): self.password = self.mack_password(row_password) def __str__(self): return self.name class Meta: verbose_name = '用户表' verbose_name_plural = verbose_name db_table = 'user' class Roles(BaseModel): desc = models.CharField(verbose_name='角色描述',max_length=20,unique=True) name = models.CharField(verbose_name='角色标识',max_length=20,unique=True) class Meta: verbose_name = '角色表' verbose_name_plural = verbose_name db_table = 'roles' class Permission(BaseModel): roles = models.ForeignKey(Roles,on_delete=models.DO_NOTHING,db_constraint=False,verbose_name='角色') user = models.ForeignKey(User,on_delete=models.DO_NOTHING,db_constraint=False,verbose_name='用户') class Meta: verbose_name = '权限表' verbose_name_plural = verbose_name db_table = 'permission'
#2-先实现注册接口,注册请求时先校验请求参数,使用ModelForm
### forms.py
class RegisterForm(forms.ModelForm): class Meta: model = models.User exclude = {'id','is_delete','update_time','create_time'}
#3-views中写入接口逻辑
class Register(PostView): model_class = models.User form_class = forms.RegisterForm # 重写 post 方法进行定制化开发 # 将前端传递的 password 进行md5加密 def post(self, requests): # 通过from进行数据验证 form_obj = self.form(requests.POST) # 数据验证是否通过 if form_obj.is_valid(): # 创建数据 # form_obj.cleaned_data 是所有验证通过的数据 data = form_obj.cleaned_data data['password'] = self.model_class.mack_password(data['password']) print('data', data) self.model.objects.create(**data) return NbResponse() else: # 返回错误信息 # return JsonResponse({"code": "500", "msg": form_obj.errors.get_json_data()}) return NbResponse(code=500, msg=form_obj.error_format)
#4-配置urls