django测试平台开发,注册

#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

 

posted @ 2020-09-21 11:49  whcp  阅读(199)  评论(0)    收藏  举报