zoukankan      html  css  js  c++  java
  • 关于python开发CRM系统

    注意本项目是针对培训学校开发简化的CRM

    CRM简介

    CRM全称:customer relationship management

    无CRM的痛点

    没有CMR的缺点及痛点:

    1. 每个销售会通过Excel来统计客户信息,造成信息不能同步和共享
    2. 客户信息没有记录和跟进信息
    3. 会造成抢单问题
    4. 无法统计成单率和报表
    5. 没有和客户的沟通记录
    6. 客户信息表,唯一的客户端ID
    7. 一对多的跟进记录
    8. 客户状态,报名和未报名
    9. 客户来源分析
    10. 学员报名信息
    11. 学员可以报多个课程,每个课程的每节课程都有成绩,以及成绩排名
    12. 班级信息

    将痛点转换成需求

    班级—>课程节次—>学员上课记录

    1. 课程信息
    2. 缴费记录
    3. 用户使用场景分析
    4. 角色管理
    5. 权限管理
    6. 动态菜单
    7. 在线交作业

    关于表结构

    后续完整后补充

    关于django的admin

    知识点回顾:

    使用django中的admin的方法:

    1、models.py中创建好表的类

    2、执行python3 manager.py makemigrations

    3、执行python3 manager.py migrate

    4、上述操作完成后默认是在项目文件下生成db.sqlite3数据库文件

    5、 在admin.py文件中先导入modes,然后将表进行注册,该项目的代码例子如下:

    from django.contrib import admin
    # Register your models here.
    from crm import models
    admin.site.register(models.Customer)
    admin.site.register(models.StudyRecord)
    admin.site.register(models.Role)
    admin.site.register(models.Menu)
    admin.site.register(models.Enrollment)
    admin.site.register(models.ClassList)
    admin.site.register(models.Branch)
    admin.site.register(models.CourseRecord)
    admin.site.register(models.Course)
    admin.site.register(models.FollowUpRecord)
    admin.site.register(models.UserProfile)

    6、 最后执行python3 manage.py createsuperuser,创建admin用户

    如何调用django中admin的认证功能

    如果想要调用django中的admin认证需要:

    在models.py文件中创建表的类的时候,先导入一个模块

    from django.contrib.auth.models import User

    然后在用户信息的类中,通过和admin中user表建立一对一的关系,从而实现认证功能

    class UserProfile(models.Model):
            '''
            用户信息
            '''
            user = models.OneToOneField(User)
            name = models.CharField(max_length=32)

    这样就可以调用django中admin的认证

    在views.py函数中使用admin的认证

    调用django中admin的认证功能需要导入如下模块,authenticate用于认证,login用于登录,logout用于退出

    from django.contrib.auth import authenticate,login,logout

    具体代码如下:

    def acc_login(request):
        if request.method == "POST":
            username = request.POST.get("username")
            password = request.POST.get("password")
            user = authenticate(username=username,password=password)
            #因为这里调用的django中admin的认证功能,所以这个时候如果认证成功得到的是<class 'django.contrib.auth.models.User'>对象
            #如果想要获取具体的用户名,可以user.userprofile.name得到
            #print("res:",type(user),user.userprofile.name)
            if user:
                #auth认证成功
                login(request,user)
                return redirect("/crm")
        return render(request,"login.html")

    这里需要知道的是authenticate返回的其实是一个用户对象

    <class 'django.contrib.auth.models.User'>,

    如果想要获取具体的用户名字则需要通过user.userprofile.name,

    关于动态菜单

    根据属于不同的用户角色的用户登录是显示不同的菜单

    (这里有一个问题需要注意,当一个菜单选项属于多个角色的时候,而这个用户又属于多个角色,这个时候就会造成该用户登录的时候菜单选项重复问题)

    动态菜单这里还有一个事情需要小技巧,就是选中某菜单的时候给一个背景色,即动态添加active

    这里可以根据url来设置,因为每个菜单的都是一个a标签而a标签的href属性和当前的页面的url是相同的

    通过通过在js中获取当前的url也就是’{{request.path}}’

    关于django中admin的自定制功能

    在django的admin中可以自定义显示的字段内容,需要在admin.py配置文件中做如下配置:

    class CustomerAdmin(admin.ModelAdmin):
      list_display = ("id","name","qq","consultant","consult_content","status","date")

    在admin.py中创建类,并且让继承admin.ModelAdmin

    list_display表示要显示的字段,将要显示的字段在后面列出,这样在前端页面就可以看到

    当然也可以通过list_filter实现过滤的搜索的功能

     

    通过search_fields实现关键字搜索

    通过list_editable实现对某些字段编辑功能如:

    自己写一个admin,这里命名为kingadmin

    分析过程:

    首先从外观分析

    django登录admin的时候显示如上图,会显示所有的app名字,并且在每个app下会显示该app所有的表名

    这里有几个知识点需要注意:

    关于如何获取所有的app

    所有注册的app都会在sttings的配置文件中的INSTALLED_APPS中,

    而这里获得方法如下:

    from django import conf
    
    for app in conf.settings.INSTALLED_APPS:
        try:
            print(__import__("%s.kingadmin" %app))
        except ImportError as e:
            print("app has no model kingadmin")

    这里通过导入django的conf模块,然后conf.settings.INSTALLED_APPS获取所有的app信息,

    关于注册表

    分析django的admin的源码可以看出关于注册这里,是创建了一个AdminSite类,并且实例化

     

    在初始化函数的时候顶一个registery字典

    每次注册都会添加到这个字典中,所以我们可以模仿这个样子写

    在这里用到几个知识点:

    自定义标签simple_tag

    创建过程:

    创建templatetags包

    在templatetags创建py文件

    导入template模块:from django import template

    register = template.Library()

    @register.simple_tag

    如果返回的内容中有html则需要

    from django.utils.safestring import mark_safe

    在要返回的字符串:mark_safe(内容)

    最要在前段页面导入:{%load kingadmin_tags%}这里kingadmin_tags 是在templatetags包创建的py文件

    待续。。。。。。。。

  • 相关阅读:
    Django REST framework
    Docker学习11-sonarqube+jenkins持续集成代码审计(下)
    Docker学习10-sonarqube+jenkins持续集成代码审计(上)
    jmeter-4-linux下环境搭建 jmeter+ant+docker-jenkins,持续集成测试完成
    jmeter-3-linux下环境搭建jmeter+ant
    jmeter-2-ant+jenkins持续集成测试
    jmeter-1-apache ant-集成测试
    python-50-pip加速与pip包虚拟环境管理
    git-基本操作
    创建 PHP Composer 包并使用的操作指南
  • 原文地址:https://www.cnblogs.com/zhaof/p/6610045.html
Copyright © 2011-2022 走看看