zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    常用设计模式
    文件上传相关报错: The current request is not a multipart request或is a MultipartResolver configured?
    Intellij IDEA 与 Gitlab 实现代码上传与下载
    Oracle两表关联,只取B表的第一条记录
    notepad++ 调整行间距
    Ubuntu18.04直接安装python3.7或者升级自带的python3.6版本之后导致终端无法打开的解决办法
    黑苹果之DELL台式机安装Mac OS X 10.13.6版本操作系统
    Windows Ping | Tracert 's Bat 脚本并行测试
    centos 7 修改 sshd | 禁止 root 登录及 sshd 端口脚本定义
    C语言中malloc函数的理解
  • 原文地址:https://www.cnblogs.com/whcp855/p/13666567.html
Copyright © 2011-2022 走看看