第10节,案例客户关系管理系统,删除,纠正和检查笔记
1.建立模型
1.导入模型
fromdjango.dbimportmodels
2.创建一个学生桌
classstudent(models.model):#c c c c c
name = models.charfield(max_length = 20)
age = models.smallintegerfield()
sex =模型。
QQ = model.Charfield(max_length = 20,unique = true)
phone = models.charfield(max_length = 20,unique = true)
c_time = models.detetimefield(verbose_name ='创建时间',auto_now_add = true)
e_time = models.detetimefield(verbose_name ='修改时间',auto_now = true)
等级= models.foreignkey('等级',on_delete = models.set_null,null = true)
IS_DELETE = model.booleanfield(default = false)#在常规开发中,我们不会直接删除数据,而是将IS_DELETE字段添加到数据状态。
def__str __(self):
返回'%s-%s-%s'%(self.name,self.age,self.sex)
3.创建学生详细信息表格
ClassStudentDetail(Models.Model):#学生详细信息表
num = models.chafield('id card',max_length = 40,unique = true)
College = Models.Charfield('毕业学校',max_length = 20,默认='')
student = models.onetoonefield('student',on_delete = models.cascade,celts rection_name ='lidet')
def__str __(self):
返回'%s-%s'%(self.num,self.college)
4.创建一个班级表
classGrade(models.model):#类表
name = models.chafield('class name',max_length = 20)
num = models.charfield('分类',max_length = 20)
def__str __(self):
返回'%s-%s'%(self.name,self.num)
5.创建一个课程表
ClassCourse(Models.Model):#课程表
name = models.charfield('课程名称',max_length = 20)
student = models.manytomanyfield('学生',通过='注册')
def__str __(self):
返回'%s'%self.name
6.创建学生桌和课程表的中间手表
classEnroll(models.model):#c
student = models.foreignkey('student',on_delete = models.cascade)
course = models.foreignkey('课程',on_delete = models.cascade)
PAY = Models.FloatField('付款金额',默认值= 0)
c_time = models.detetimefield(verbose_name ='创建时间',auto_now_add = true)
def__str __(self):
返回'%s'%self.pay
##
2.实现其他,删除和调查功能实现
1.索引页面视图功能
fromdjango.shortcutsimportrender,重定向,反向
fromdjango.httpimporttpresponse
FromStudent.Modelsimportstudent,等级,StudentDetail
fromdjango.db.modelsimportq
fromdjango.core.paginatorimportpaginator
#在这里创建您的视图。
Defindex(请求):
部分='学生名单'
search = request.post.get('search','')。strip()#接收参数从html表单上传递
ifsearch:
ifsearch.isdigit():#如果是数值类型
sts = student.objects.filter(q(qq = search)| q(电话=搜索),is_delete = false)#使用qq和电话匹配
else:#如果是字符类型
sts = student.objects.filter(name = search,is_delete = false)#
else:#搜索不匹配,并查询所有学生
sts = student.objects.filter(is_delete = false)
sts = sts.order_by('-c_time')#
returnrender(请求,'student/index.html',context = {
'sts':sts,
“部分”:部分,
“搜索”:搜索,
}))
2.学生删除页面视图
Defstudent_delete(请求,PK):
student = student.objects.gets(pk = pk)#s s s s s s s p p p p p p p p p p p s s s
student.is_delete = true#mark is_delete as true,
student.save()#保存
returnredirect(反向('student:index'))
3.学生详细信息页面查看
defstudent_detail(请求,PK):
部分='学生详细信息'
等级= grade.objects.all()
sts = student.objects.gets(pk = pk)#获取当前ID的学生信息为PK
等级=等级。
详细信息= studentDetail.objects.get(student = sts)#指定学生的查询详细信息
returnrender(请求,'sut力地/student_detail.html',context = {
“部分”:部分,
“成绩”:等级,
'sts':sts,
“等级”:等级,
“细节”:细节,
}))
4.添加页面视图功能
defstudent_add(请求):
部分='添加学生信息'
等级= grade.objects.all()#
ifrequest.method =='get':
returnrender(请求,'sut力地/student_detail.html',context = {
“部分”:部分,
“成绩”:等级,
}))
ifrequest.method =='post':
#信息
grade_id = request.post.get('等级')#
尝试:
等级=等级。
除了:
等级=无
#获取学生信息名称,年龄,性别,QQ,电话号码
数据= {
'name':request.post.get('name'),
'age':request.post.get('age'),
'sex':request.post.get('sex'),
'qq':request.post.get('qq'),
“电话”:request.post.get('phone'),
“等级”:等级#相关性,在学生中
}
student = student.objects.create(**数据)
#获取学生详细信息信息
StudentDetail.Objects.create(
num = request.post.get('num'),
College = request.post.get('College'),
学生=学生#桌协会
治愈
returnredirect(反向('student:index'))
5.修改学生信息页面视图功能
Defstudent_edit(请求,PK):
部分='修改学生信息'
sts = student.objects.get(pk = pk)#iD的查询ID作为PK学生
等级=等级。
详细信息= studentDetail.objects.get(student = sts)#指定学生的查询详细信息
ifrequest.method =='get':
returnrender(请求,'sut力地/student_detail.html',context = {
“部分”:部分,
'sts':sts,
“等级”:等级,
“细节”:细节,
}))
ifrequest.method =='post':
#信息
grade_id = request.post.get('等级')#
尝试:
等级=等级。
除了:
等级=无
#获取学生信息并修改
student = student.objects.get(pk = pk)
student.name = request.post.get('name')
student.age = request.post.get('age')
Student.Sex = request.post.get('性')
student.qq = request.post.get('qq')
student.phone = request.post.get('phone')
student.grade =等级#桌协会
#获取学生详细信息
尝试:
详细信息= student.detail#更正,关联表在学生中
除了:
详细信息= StudentDetail()
详细信息=学生#表协会,关联表详细
devail.num = request.post.get('num')
详细信息。
lide.save()#保存
student.save()#保存
returnredirect(反向('student:index'))
第三,分页函数实现
1.主页的页面方法
1.1主页的查看功能
Defindex(请求):
部分='学生名单'
search = request.post.get('search','')。strip()#接收参数从html表单上传递
ifsearch:
ifsearch.isdigit():#如果是数值类型
sts = student.objects.filter(q(qq = search)| q(电话=搜索),is_delete = false)#使用qq和电话匹配
else:#如果是字符类型
sts = student.objects.filter(name = search,is_delete = false)#
else:#搜索不匹配,并查询所有学生
sts = student.objects.filter(is_delete = false)
sts = sts.order_by('-c_time')#
#分分
total_num = sts.count()#总数据金额
per_page = int(request.get.get.get('per_page',5))#每个页面默认号码5
page = int(request.get.get.get('page',1))#p p p p p p p p p 1
p = paginator(sts,per_page,all_empty_first_page = true)
sts = p.get_page(page)#每页显示的数据
total_page = p.num_pages#总页码
page_list = p.page_range#获取页面范围
returnrender(请求,'student/index.html',context = {
'sts':sts,
“部分”:部分,
“搜索”:搜索,
'total_num':total_num,
'total_page':total_page,
“页面”:页面,
'per_page':per_page,
'page_list':page_list,
}))
1.2,html中页面代码的设置
navaria-label =“页面导航”样式=“ display:inline-black”
ulclass =“分页”
li {%ifpage == 1%} class =“ disabled” {%endif%}
ahRef =“ {%如果付费1%} {%url'student:index'%}?page = {page | add:-1} per_page = {per_page} {%else%} {%url'rudentit:undersit:underit:index'index'%}?page = {pag}} per_page = {{per_page}} {%endif%}“ aria-label =“ pronos”
Spanaria-Hidden =“ true”以前/跨度
/A
/li
{in page_list%}的i%}
li {%ifpage == i%} class =“ active” {%endif%} ahref =“ {{request.path}}?page = {i} per_page = {per_page}}
{%endfor%}
li {%ifpage == total_page%} class =“ disabled” {%endif%}
ahRef =“ {%如果付费总计_page%} {%url'student:index'%}?page = {page | add:1} per_page = {{per_page} {per_page} {%else%} index'%} index'%}?}} per_page = {per_page}}} {%endif%}“ aria-label =“ next”“”“”
Spanaria-Hidden =“ true”下一个/跨度
/A
/li
/ul
/nav
! - 单个按钮 -
Divlass =“ BTN-Round”样式=“ Display:inline-Black; Margin-Top:-68px”
buttonType =“ button” class =“ btn btn btn btn-default dropdown-togle” data-toggle =“下拉” aria-haspopup =“ true” aria-expanded =“ false”
{per_page}} bar/page spanclass =“ caret”/span
/按钮
ulclass =“下拉penu”“”
liahref =“ {%url'student:index'%}?page = {page}} per_page = 5“ 5” pages/a/a/li
liahref =“ {%url'student:index'%}?page = {page}} per_page = 10“ 10” 10英寸页/a/a/li
liahref =“ {%url'学生:index'%}?page = {page}} per_page = 15“ 15”页/a/a/li
liahref =“ {%url'student:index'%}?page = {page}} per_page = 20“ 20” 20“页面/a/a/li
/ul
/div
2.对于主页分页方法2(使用标签)
2.1,索引中的视图功能
Defindex(请求):
部分='学生名单'
search = request.post.get('search','')。strip()#接收参数从html表单上传递
ifsearch:
ifsearch.isdigit():#如果是数值类型
sts = student.objects.filter(q(qq = search)| q(电话=搜索),is_delete = false)#使用qq和电话匹配
else:#如果是字符类型
sts = student.objects.filter(name = search,is_delete = false)#
else:#搜索不匹配,并查询所有学生
sts = student.objects.filter(is_delete = false)
sts = sts.order_by('-c_time')#
#分分
total_num = sts.count()#总数据金额
per_page = int(request.get.get.get('per_page',5))#每个页面默认号码5
page = int(request.get.get.get('page',1))#p p p p p p p p p 1
p = paginator(sts,per_page,all_empty_first_page = true)
sts = p.get_page(page)#每页显示的数据
total_page = p.num_pages#总页码
page_list = p.page_range#获取页面范围
returnrender(请求,'student/index.html',context = {
'sts':sts,
“部分”:部分,
“搜索”:搜索,
'total_num':total_num,
'total_page':total_page,
“页面”:页面,
'per_page':per_page,
'page_list':page_list,
}))
2.2。在TemplateTags文件夹中创建student_custormer_tags.py
#!/usr/bin/python
# - * - 编码:UTF-8 - * -
#作者:CYB时间:2019/5/25 23:34
FromDjangoImportTemplate
寄存器= template.library()
@register.inclusion_tag('student/paginitor.html',take_context = true)
Defapagination_html(上下文):#D D D
total_page = context ['total_page']#总页码
pay = context ['page']#显示第一页的数据
page_list = context ['page_list']#页范围
per_page = context ['per_page']#每个页码
'''
假设total_page = 6
两个页码控制方法:
当num = 1#当前页面的当前页面上有几页
上一个1 2 3下一页
前4 5 6下一页
上一页1 2下一页
前5 6个下一页
当num = 2#当前页面的当前页面上有几页
上一个1 2 3下一页
上一个1 2 3 4下一页
上一个1 2 3 4 5下一页
前2 3 4 5 6下一页
前4 5 6下一页
'''
page_list = []
num = 2
#1.左 +当前页面上显示的页码列表
#1.1,当左显示不够的显示时,页面1到当前页面
ifpage-num = 0:
foriinrange(1,第+1页):
page_list.append(i)
else:#当左侧足以显示时,页面范围是当前页面的PAG-NUM
forInrange(Page-num,Page+1):
page_list.append(i)
#2,右侧显示的页码列表 +当前页面
#2.1,当右边不足以显示时,页码范围当前页面到total_page
ifpage+num = total_page:
forinrange(Page+1,total_page+1):
page_list.append(i)
#2.2,当右边足够时,页面范围(当前页+1)to(当前页 +num)
别的:
forInrange(第+1页,页+num):
page_list.append(i)
返回 {
'total_page':total_page,
“页面”:页面,
'page_list':page_list,
'per_page':per_page
}
2.3,构建新构建的标签渲染模板paginitor.html
ulclass =“分页”
li {%ifpage == 1%} class =“ disabled” {%endif%}
a {%ifpage 1%} href =“ https://www.zhuangjiba.com/u/u/u/u/u/u/u/u/u/u/u/u/u/u {%url'qutiferal'student:index'%}?| add:'-1'} per_page = {{{{{{{per_page}} {%endif%}“ aria-label =“ pronast”
Spanaria-Hidden =“ true”?/span
/A
/li
{page_list%的page_num}
li {%ifpage_num == page%} class =“ active” {%endif%} ahref =“ {{request.path}?page = {page_num} per_page = {per_page}}}}}}}}}
{%endfor%}
li {%ifpage == total_page%} class =“ disabled” {%endif%}
a {%ifpage total_page%} href =“ https://www.zhuangjiba.com/u/ {request.path}?%endif%}“ aria-label =“ next”
Spanaria-Hidden =“ true”?/跨度
/A
/li
/ul
2.4,在Index.html导入后处于相应位置的指南
1.导入:{%加载Student_customer_tags%}
2.报价:
nav aria-label =“页面导航”样式=“ display:inline-black”
{%pagination_html%}
/nav
第四页显示
1.主页显示
2.添加页面显示
3.修改页面显示
客户的损失是不可避免的,但是如果客户的损失率太高,它将直接影响企业的利润,甚至将成为企业失败的先驱。如何防止客户过度暴露?我们必须从产品,服务和客户开始。
在企业的运营中,产品是最后一句话,服务是柔软度的原则,客户管理是控制的关键。因此,如何管理客户?这必须提及CRM系统。
CRM系统是基于客户的管理软件。良好的CRM系统不仅可以帮助企业扩大客户获取的渠道,而且还可以提高旧客户的保留率,增强企业的市场份额和利润,并提高企业的竞争力。
C2P功能云CRM模块是一个非常实用的客户管理系统。它支持个人购买。它也可以与其他模块一起购买。它可以帮助企业自动在多个渠道中获取客户。您还可以帮助管理销售,科学分配商机和线索,并帮助销售人员分析交易率。通过工业云CRM系统,公司可以有效地了解所有商机线索,准客户,销售跟踪流程,签名客户,丢失的客户和其他客户。
适用于公司微信管理客户,基本上有几个类别:
1.建议使用微信组的企业经营客户来替换公司的微信集团,因为该公司的微信适用于大型社区运营,并将其自己的入境进入团体欢迎,自动恢复,自动踢球,数据分析和支持社区裂变;
2.大型企业,大品牌,推荐了企业微信,因为该公司的微信真正的名称验证,强大的品牌认可;
3.教育,零售,餐饮,餐饮,金融,保险,家庭,大健康,汽车公司,房地产公司,向B销售,推荐公司微信,所有这些都已经用完了成熟的计划和案件,客户集中管理,不担心该公司销售将离开,不必担心销售,步行;
4. Douyin,baidu,Friends Circle,客户获取需求需要信息流量广告,建议公司微信。传统CRM仅基于手机线索的发行。基于公司微信的SCRM可以带来S属性2。与客户打开微信互动记录,您可以知道您是否阅读了朋友的信息和圈子。被补充的S末端数据,您的客户肖像不再是表格中的字段,而是微信朋友的标签和属性。,营销自动化。
哪个是最好的公司微信客户管理系统?根据需求,请参阅一些方面:
1.基本CRM功能是否完成
2.是否完全结合了公司的微信特征
3.是否使用内部系统支持它
4.除工具外,该服务还足够好。
我使用了一个相对较好的SCRM服务提供商,微信助理SCRM。他们家庭的早期业务是在微信生态系统周围进行的。这是一个专业的微信机器人管理专家。随着小组数据分析,新朋友自动响应,自动将人们吸引到该组,自动组用户是朋友,受欢迎的单词,机器人聊天,新闻时间组,机器人自动回复,组签名 - 组签名 -在,微信小组文档,小组成员管理以及数十个强大的功能。
在过去的两年中,我们还专注于公司的微信SCRM。他们拥有丰富的微型客户资源,因此他们对不同行业的用户有深刻的了解,并且在执行产品功能时会考虑许多场景。Enterprises使用微型转换来使用公司Microexis也有自己的一些重新使用经验。
1.首先,将我的有效身份证带到柜台的中国人民银行的柜台。
2.第二个是将我的有效ID带到中国人民银行的分支机构,以通过渠道的信用报告来查询自助查询机。
3.最后,在互联网上进行在线查询的唯一正式渠道是“中国人民银行信贷中心”。用户可以通过中国人民银行信用中心的官方网站进入Internet个人信用信息查询平台,然后根据Internet关注它们。系统改进执行查询操作。
中国移动协作客户关系管理系统是实现客户管理的以下方法。
1.移动通信公司的CRM分析1.1移动客户确定移动公司通过一系列技术手段了解其客户公司的需求是什么,哪种客户最有价值,并将这些客户用作公司客户关系管理的实施,以便成功地为企业实施CRM供应保护。
2.移动客户确定移动公司通过一系列技术手段了解其客户,收集客户信息并根据客户的特征获取数据,并购买记录,以找出谁是公司的潜在客户,以及什么是需求客户的类型是最有价值的,这些客户被用作公司客户关系管理的实施对象,以便为成功实施企业提供保证。