python笔记27(CRM4)

S21day27 crm系统
今日内容:
 1.Crm业务开发
  ①部门管理
  ②用户管理
  ③校区、课程管理
  ④客户管理
  ⑤学院管理
 2.权限系统应用

任务:
 1. 创建项目
 2. 部门管理(ModelForm)
  - 部门列表
  - 添加
  - 编辑
  - 删除
 3. 用户管理
  - 用户列表
   - choice选项
   - FK
   - M2M
  - 用户添加
   - form对象循环,无需再进行每个字段的编写。
   - 页面form-control样式,重写__init__方法,动态为每个字段进行设置。
   - 本地化,form默认的英文错误提示信息转换成中文。
   - 密码的md5加密(ModelForm的钩子函数)
    
    class UserModelForm(forms.ModelForm):
     class Meta:
      model = models.UserInfo
      fields = "__all__"
     
     def __init__(self, *args, **kwargs):
      # 在父类的初始化方法中将7个字段当成字典放到了 self.fields 中。
      super(UserModelForm, self).__init__(*args, **kwargs)
      
      for key, field in self.fields.items():
       field.widget.attrs['class'] = 'form-control'
     
     def clean_password(self):
      """
      密码对应的钩子方法
      :return:
      """
      user_input_pwd = self.cleaned_data['password']
      return md5(user_input_pwd)
  - 用户编辑和用户删除
  
 4. 校区、课程、班级管理
  
 5. 客户管理
  - 公户管理
  - 私户管理
  
 6. 跟进记录
  
  
 7. 权限的应用
  参考使用文档:readme
  
 
总结:
 1. 学会开发技能(通用)
 2. 使用rbac组件(通用)
 
 以后公司项目开发:
  - 对rbac相关表:
   - 菜单
   - 权限
   - 角色 (权限角色关系)
  
  - 目前:权限信息的录入和分配(基于admin来做)
  
  - 权限信息录入不完整(录完)
  
  
我的感想:
 
  
作业:权限表中的增删改查(ModelForm实现)
 
  
  
  
1、创建crm项目s21crm,注册app为crm
2、复制rbac、删除数据库迁移记录、注册rbac
3、在rbac下的models.py中,修改UserInfo类为AbStractUserInfo
  class AbStractUserInfo(models.Model):
  """
  用户表
  """
  username = models.CharField(verbose_name='用户名', max_length=32)
  password = models.CharField(verbose_name='密码', max_length=64)
  roles = models.ManyToManyField(verbose_name='关联角色', to='Role')
  class Meta:
   abstract = True  # 表示让django的orm不在为该类在数据库中创建表
 
 在crm下的models.py中,添加UserInfo类,继承AbStractUserInfo
  from django.db import models
  from rbac.models import AbStractUserInfo

  # Create your models here.
  class Department(models.Model):
   """
   部门表
   """
   title = models.CharField(verbose_name='部门', max=32)
  class UerInfo(AbStractUserInfo):
   """
   用户表
   """
   depart = models.ForeignKey(verbose_name='部门', to='Department')
   email = models.EmailField(verbose_name="邮箱")
   phone = models.CharField(verbose_name="手机", max_length="32")
 在rbac中注释admin.site.register(models.UserInfo)
 执行数据库操作:python manage.py makemigrations  python manage.py migrate
4、部门管理:
 1、继承layout.html模板(layout.html中先注释掉{% load rbac %}{% get_menu request %})
 2、创建views文件夹,在文件夹下创建对应的视图文件
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
原文地址:https://www.cnblogs.com/xingye-mdd/p/9958849.html