关于python开发CRM系统
2017-03-24 10:19
148 查看
注意本项目是针对培训学校开发简化的CRM
每个销售会通过Excel来统计客户信息,造成信息不能同步和共享
客户信息没有记录和跟进信息
会造成抢单问题
无法统计成单率和报表
没有和客户的沟通记录
客户信息表,唯一的客户端ID
一对多的跟进记录
客户状态,报名和未报名
客户来源分析
学员报名信息
学员可以报多个课程,每个课程的每节课程都有成绩,以及成绩排名
班级信息
课程信息
缴费记录
用户使用场景分析
角色管理
权限管理
动态菜单
在线交作业
使用django中的admin的方法:
1、models.py中创建好表的类
2、执行python3 manager.py makemigrations
3、执行python3 manager.py migrate
4、上述操作完成后默认是在项目文件下生成db.sqlite3数据库文件
5、 在admin.py文件中先导入modes,然后将表进行注册,该项目的代码例子如下:
6、 最后执行python3 manage.py createsuperuser,创建admin用户
在models.py文件中创建表的类的时候,先导入一个模块
from django.contrib.auth.models import User
然后在用户信息的类中,通过和admin中user表建立一对一的关系,从而实现认证功能
这样就可以调用django中admin的认证
from django.contrib.auth import authenticate,login,logout
具体代码如下:
这里需要知道的是authenticate返回的其实是一个用户对象
<class 'django.contrib.auth.models.User'>,
如果想要获取具体的用户名字则需要通过user.userprofile.name,
(这里有一个问题需要注意,当一个菜单选项属于多个角色的时候,而这个用户又属于多个角色,这个时候就会造成该用户登录的时候菜单选项重复问题)
动态菜单这里还有一个事情需要小技巧,就是选中某菜单的时候给一个背景色,即动态添加active
这里可以根据url来设置,因为每个菜单的都是一个a标签而a标签的href属性和当前的页面的url是相同的
通过通过在js中获取当前的url也就是’{{request.path}}’
在admin.py中创建类,并且让继承admin.ModelAdmin
list_display表示要显示的字段,将要显示的字段在后面列出,这样在前端页面就可以看到
当然也可以通过list_filter实现过滤的搜索的功能
通过search_fields实现关键字搜索
通过list_editable实现对某些字段编辑功能如:
首先从外观分析
django登录admin的时候显示如上图,会显示所有的app名字,并且在每个app下会显示该app所有的表名
这里有几个知识点需要注意:
而这里获得方法如下:
这里通过导入django的conf模块,然后conf.settings.INSTALLED_APPS获取所有的app信息,
在初始化函数的时候顶一个registery字典
每次注册都会添加到这个字典中,所以我们可以模仿这个样子写
创建过程:
创建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文件
待续。。。。。。。。
CRM简介
CRM全称:customer relationship management无CRM的痛点
没有CMR的缺点及痛点:每个销售会通过Excel来统计客户信息,造成信息不能同步和共享
客户信息没有记录和跟进信息
会造成抢单问题
无法统计成单率和报表
没有和客户的沟通记录
客户信息表,唯一的客户端ID
一对多的跟进记录
客户状态,报名和未报名
客户来源分析
学员报名信息
学员可以报多个课程,每个课程的每节课程都有成绩,以及成绩排名
班级信息
将痛点转换成需求
班级—>课程节次—>学员上课记录课程信息
缴费记录
用户使用场景分析
角色管理
权限管理
动态菜单
在线交作业
关于表结构
后续完整后补充关于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文件
待续。。。。。。。。
相关文章推荐
- 关于使用CMS 系统开发网站的建议
- 关于开发系统后门软件的几点思路
- 关于《ASP.NET办公自动化系统开发实例导航》问题的一些总结
- 微软CRM系统二次开发步骤以及注意事项
- 开源客户关系管理系统SplendidCRM下的二次开发
- 旅店管理系统开发过程中的插曲2--关于oo
- 关于快速开发和设计应用系统的一些个人的意见
- 关于Script.NET Python开发包的一些问题解答
- CRM-Solution系统之单据开发感想
- 【Python开发web】(1) -- 系统环境与框架的选择
- [转帖]关于开发系统后门软件的几点思路
- 关于ASP.NET系统开发的心得
- 关于开发系统后门软件的几点思路
- 在系统开发中关于实体的问题
- 开发ERP、MIS、CRM等网络业务系统,竟然可以这样做?!
- 我要开发一个关于宠物管理方面的系统,急寻找开发人员~~~~
- 关于在BSD系统中简单设计系统调用, --核心开发入门(2)
- 关于CRM系统中员工,招商经理,招商专员等和代理商对于进销存系统信息查询的限制设计
- 关于移动设备上GIS系统开发的一个问题(EVC+MapXMobile)
- Grails 开发Web系统:关于在gsp页面中调用CSS无效原因.