关于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文件

待续。。。。。。。。

时间: 2024-10-12 04:51:07

关于python开发CRM系统的相关文章

Python开发柜员机系统

需求: 1.自动控测电脑有没有注册账号 2.注册账号功能 3.登陆账户三次失败,锁定账户,并禁止登陆(每次登陆失败提示还有几次机会) 4.修改密码功能(第一次先输入旧密码,后两次输入相同的新密码,否则报错提示) 5.可以取款,提现.转账,一次性取款存款转账限额一万五 (开发一半) 6.存款手续费3%,提现手续费5%   (未开发) 7.可以预透支金额,限额三万  (还剩一半功能) 8.每月10号为还款日,过期未还,按欠款额5%利息(未开发) 9.还款功能(包括查看欠款金额.还款.还剩计息日) (

CRM系统开发一般需要多久?

随着互联网的发展,CRM系统已经被越来越多的企业所认可.接受,被当做一种先进的企业管理理念.但是,由于每个企业的产品及业务流程不同,都有自己独特的功能需求,需要进行定制开发CRM,才能符合企业的发展.那么,CRM系统开发一般需要多久?成本怎么算? 实际上,决定CRM管理系统开发时间长短的主要有三大因素:需要CRM具备什么功能.产品系统开发难易程度以及所要求的质量.在不明确这三个条件时,是无法告知明确的时间的. 1.功能不同:不同开发者对于CRM管理系统的功能需求不同,一般来说,系统功能数量越多,

如何在CRM系统中集成ActiveReports最终报表设计器

有时候,将设计器集成到业务系统中,为用户提供一些自定义的数据表,用户不需要了解如何底层的逻辑关系和后台代码,只需要选择几张关联的数据表,我们会根据用户的选择生成可供用户直接使用的数据集.本文第一部分主要讲解了,如何构造三种报表模板,第二部分主要讲解了对于DataRelation类在动态绑定数据集之间的用法. 首先需要构造LayoutBuilder类,该类主要构造三种类型的报表以及为它们添加数据集字段. 1. 创建RDL 报表 使用PageReport对象,并添加属性 public static

使用NoSQL实现高并发CRM系统实践(源代码+解析)

又想速度快,又要大数据,又要保证数据不出错,还要拥抱变化,改需求的时候不那么痛苦,特别是字段的调整,按照以前的做法,想想就头疼.使用NoSQL,简直就是随心所欲,再奇葩的数据结构,处理起来也很容易.下面看我如何用NoSQL数据库实现高并发,高可靠的CRM系统. 1.前言 随着facebook.微博等WEB2.0互联网网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本

开源分享:用Python开发的开源博客系统Blog_mini

本博文在51CTO技术博客首发. 开源不易,Python良心之作,真心送给广大朋友,恳请给予支持,不胜感激! 0.Blog_mini送给你们:让每个人都轻松拥有可管理的个人博客 你从未架设过服务器或网站,希望可以接触一下这方面的知识-- 你从未使用过Linux操作系统,希望可以接触一下这方面的知识-- 你是初中生/高中生/大学生,希望能在学业之余锻炼一下自己的IT技能-- 你是Python新手,希望能有一个用Python开发的个人博客-- 你学习Python许久,希望有一个开源的项目可以用来学习

Ubuntu系统下搭建Python开发环境

之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 执行完成后,在shell中输入python3.5,出现如下对话框说明Python3.5更新成功. 2.安装JDK8,在终端中输入如下命令: sudo

Python Django 集成Redis Sentinel(哨兵)集群开发秒杀系统

我们知道秒杀系统最大特点是瞬时高并发.高访问量的系统.我们还要保证它的高可用性.这里我们采用Python Django 集成Redis Sentinel(哨兵)集群开发秒杀系统. Redis Sentinel(哨兵)集群Redis哨兵为Redis集群提供了高可用性.实际上这意味着我们可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis集群部署.可大大提高系统的高可用性. 哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置. 下面是在宏观层面上哨兵模式的功能列表: 监控:

为什么越来越多的企业选择使用Python开发?

近来,Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用.1.简介    Python,是一种面向对象.直译式的计算机程序语言,具有近二十年的发展历史.它包含了一组功能完备的标准库,能够轻松完成很多常见的任务.它的语法简单,与其他大多数程序设计语言使用大括号不同,它使用缩进来定义语句块.    Python支持命令式程序设计.面向对象程序设计.函数式编程.面向侧面的程序设计.范型编程多种编程范式. 2

crm 系统项目(一) 登录,注册,校验

crm 系统项目(一) 登录,注册,校验 首先创建一个Django项目,关于配置信息不多说,前面有~ models.py文件下创建需要的表格信息,之后导入数据库 from django.db import models from multiselectfield import MultiSelectField course_choices = (('Linux', 'Linux中高级'), ('PythonFullStack', 'Python高级全栈开发'),) class_type_choi