个人博客,欢迎查看:https://blog.starmeow.cn/
Github地址:https://github.com/xyliurui/DjangoCRM
Django【项目】客户关系
DjangoCRM 学习一位大神的博客CRM客户关系管理个人学习感谢
本文使用Django2.1.3+Bootstrap实现CRM系统,适合有基础的学习,内容部分与大神博客有些许差别,项目我是一步一步完成的,大家可以互相交流学习。
客户关系管理(customer relationship management)的定义是:企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售、营销和服务上的交互,从而提升其管理方式,向客户提供创新式的个性化的客户交互和服务的过程。其最终目标是吸引新客户、保留老客户以及将已有客户转为忠实客户,增加市场。
作用
- 提高市场营销效果
- 为生产研发提供决策支持
- 提供技术支持的重要手段
- 为财务金融策略提供决策支持
- 为适时调整内部管理提供依据
- 使企业的资源得到合理利用
- 优化企业业务流程
- 提高企业的快速响应和应变能力
- 改善企业服务,提高客户满意度
- 提高企业的销售收入
- 推动了企业文化的变革
- 与QQ集成,可以快速与客户沟通
开发流程
需求分析
- 存储所有的客户咨询信息
- 避免重复数据
- 客户的多次跟踪记录
- 客户来源、成单率分析
- 每个销售只能修改自己的客户信息
- 报名流程开发
班级管理
- 学员成绩,出勤管理
- 问卷调查
校区管理
- 创建校区并进行管理
课程管理
- 课程大纲管理,周期,价格,代课老师
讲师的上课记录
- 记录讲师上课,在线作业等
学员就业情况
知识库
权限管理
角色
- 销售
- 讲师
- 学员
- 管理员
思维导图
image.png业务场景分析(用户使用场景)
销售
- 销售A 刚从 百度推广 聊了一个客户,录入了CRM系统,咨询了python全栈开发课程,但是没报名
- 销售B 从 qq群聊了客户,且报名了python全栈9期课程,给用户发送了报名连接,待用户填写完毕后,把他添加到了python fullstack s9的班级里
- 销售C 打电话给之前的一个客户,说服他报名linux40期,但是没说服成功,更新了跟踪记录
- 销售D 聊了一个客户,录入时发现,此客户已存在,不能录入,随后通知相应的客户负责人跟进
- 销售B 从客户库里过滤出了 所有超过一个月未跟踪的客户,然后进行跟踪(如果成了,这客户就算B的)
- 销售主管 查看了部门 本月的销售报表, 包括来源分析,成单率分析,班级报名数量分析,销售额同比
学员
- 客户A 填写了销售发来的报名链接,上传了个人的证件信息,并提交,过了一会儿,发现收到一个邮件,告知他报名python9期课程成功,并帮他开通了学员账号
- 学员A 登录了学员系统,看到了 自己的合同,报名的班级,以及课程大纲
- 学员A 提交了python9期的 第1节课的作业
- 学员A 查看了自己在python9期的学习成绩和排名
- 学员A 在线搜索一个问题,发现没有答案,于是提交了一个问题
讲师
- 登录了CRM,查看自己管理的班级列表
- 进入了python9期,创建了第一节的上课记录,填入了本节内容,作业需求
- 为python9期的第一节课,进行点名,发现科比迟到了,标记他为迟到状态
- 批量下载了所有学员的python9期第一节的作业,给每个学生在线 打成绩+批注
管理员
- 创建了 课程(linux,python)
- 创建了 校区(北京,上海)
- 创建了 班级(python fullstacks9和linux40)
- 创建了 账号(A,B,C,D)
- 创建了 销售,讲师,学员三个角色,并把ABCD分配到了销售角色里
- 设置了销售可以操作的权限
创建环境
>mkvirtualenv DjangoCRM
>workon DjangoCRM
>pip install django
使用Pycharm创建项目和应用
image.png修改settings
ALLOWED_HOSTS = [
'127.0.0.1',
]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crm.apps.CrmConfig',
]
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
# USE_TZ = True
# 数据库存储使用时间,True时间会被存为UTC的时间
USE_TZ = False
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# 设置我们上传文件的路径
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
网友评论