day31 crm开发之用户ModelForm定制和密码加密
web程序模型表结构
from django.db import models
from rbac.models import UserInfo as RbacUserInfo
# Create your models here.
class School(models.Model):
"""
校区表
如:
北京昌平校区
上海浦东校区
深圳南山校区
"""
title = models.CharField(verbose_name='校区名称', max_length=32)
def __str__(self):
return self.title
class Department(models.Model):
"""
部门表
"""
title = models.CharField(verbose_name='部门名称', max_length=16)
def __str__(self):
return self.title
class UserInfo(RbacUserInfo):
"""
员工表
"""
nickname = models.CharField(verbose_name='姓名', max_length=16)
phone = models.CharField(verbose_name='手机号', max_length=32)
gender_choices = (
(1, '男'),
(2, '女'),
)
gender = models.IntegerField(verbose_name='性别', choices=gender_choices, default=1)
depart = models.ForeignKey(verbose_name='部门', to="Department",on_delete=models.CASCADE)
def __str__(self):
return self.nickname
stark组件v1模块中函数get_model_form_class新增入参, is_add=False
添加页面函数add_view请求forms定制函数请求参数is_add=True)
编辑页面函数change_view请求forms定制函数请求参数is_add=False)
加密函数
# -*- encoding: utf-8 -*-
"""
@File : md5.py
@Time : 2022/2/27 21:45
@Author : simon
@Email : 294168604@qq.com
@Software: PyCharm
"""
import hashlib
def gen_md5(origin):
"""
md5加密
:param origin:
:return:
"""
ha = hashlib.md5(b'jk3usodfjwkrsdf')
ha.update(origin.encode('utf-8'))
return ha.hexdigest()
web程序中业务逻辑代码如下
web/stark.py
from stark.service.v1 import site, StarkHandler, get_choice_text, StarkModelForm
from web import models
from django.core.exceptions import ValidationError
from django import forms
from web.utils.md5 import gen_md5
class SchoolHandler(StarkHandler):
list_display = ['title']
site.register(models.School, SchoolHandler)
class DepartmentHandler(StarkHandler):
list_display = ['title', ]
site.register(models.Department, DepartmentHandler)
class UserInfoAddModelForm(StarkModelForm):
confirm_password = forms.CharField(label='确认密码')
class Meta:
model = models.UserInfo
fields = ['name', 'password', 'confirm_password', 'nickname', 'gender', 'phone', 'email', 'depart', 'roles']
def clean_confirm_password(self):
password = self.cleaned_data['password']
confirm_password = self.cleaned_data['confirm_password']
if password != confirm_password:
raise ValidationError('密码输入不一致')
return confirm_password
def clean(self):
password = self.cleaned_data['password']
self.cleaned_data['password'] = gen_md5(password)
return self.cleaned_data
class UserInfoChangeModelForm(StarkModelForm):
class Meta:
model = models.UserInfo
fields = ['name', 'nickname', 'gender', 'phone', 'email', 'depart', 'roles']
class UserInfoHandler(StarkHandler):
list_display = ['nickname', get_choice_text('性别', 'gender'), 'phone', 'email', 'depart']
def get_model_form_class(self, is_add=False):
if is_add:
return UserInfoAddModelForm
return UserInfoChangeModelForm
site.register(models.UserInfo, UserInfoHandler)
效果图
分类:
crm系统开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具