关于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,然后将表进⾏注册,该项⽬的代码例⼦如下:
ib import admin
# Register your models here.
django admin 自定义页面from crm import models
ister(models.Customer)
ister(models.StudyRecord)
ister(models.Role)
ister(models.Menu)
ister(models.Enrollment)
ister(models.ClassList)
ister(models.Branch)
ister(models.CourseRecord)
ister(models.Course)
ister(models.FollowUpRecord)
ister(models.UserProfile)
6、最后执⾏python3 manage.py createsuperuser,创建admin⽤户
如何调⽤django中admin的认证功能
如果想要调⽤django中的admin认证需要:
在models.py⽂件中创建表的类的时候,先导⼊⼀个模块
dels 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⽤于退出
ib.auth import authenticate,login,logout
具体代码如下:
def acc_login(request):
hod == "POST":
username = ("username")
password = ("password")
user = authenticate(username=username,password=password)
#因为这⾥调⽤的django中admin的认证功能,所以这个时候如果认证成功得到的是<class 'dels.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 'dels.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⽂件待续。。。。。。。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。