一 . 什么是CRM

  CRM就是客户关系管理系统(customer relationship management)

二 . 用户登录

# models.py文件
class UserProfile(models.Model): username = models.EmailField(max_length=255, unique=True, )
password = models.CharField(verbose_name='密码', max_length=128, )
name = models.CharField('名字', max_length=32)
department = models.ForeignKey('Department', default=None, blank=True, null=True, verbose_name='部门')
mobile = models.CharField('手机', max_length=32, default=None, blank=True, null=True)
memo = models.TextField('备注', blank=True, null=True, default=None)
date_joined = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
# 管理员看他是否离职,如果离职则改为False,只有账号密码都正确并且is_active=True

  可以去网站上扒好看的登录页面

    步骤一(找到你想要的模型)  

  

    步骤二(查看源代码)

  

    步骤三(找到css样式)

  

    步骤四(在HTML文件中的body部分把路径修改一下)

    步骤五(查看效果)

三 . 注册验证

# views.py文件,也可以单独在APP下建议个py文件写

from django import forms
from crm import models
from django.core.exceptions import ValidationError
import hashlib class RegForm(forms.ModelForm):
# Meta里面的内容不满足你的验证要求,可以在Meta外面写,
password = forms.CharField(
widget=forms.PasswordInput,
label='密码',
min_length=6,
max_length=16,
# 这个字段的报错信息也只写在这里才生效
error_messages={'min_length': '不能小于6位'}
)
re_password = forms.CharField(widget=forms.PasswordInput, label='确认密码', min_length=6, max_length=16) class Meta: # 类名只能是Meta 而且下面的字段名都不能改 model = models.UserProfile # 对应models中的类
fields = '__all__' # 拿到所有的字段
# print(fields)
exclude = ['is_active'] # 除了is_active这个字段
labels = {
'username': '用户名' # 前边的那个label改成'用户名'
}
# 下面的报错信息不会生效,因为在Mata中写的只对默认生成的字段有效
error_messages = {
'required': '不能为空',
}
# 批量操作, 把所有的字段都加上class=form-control这个属性
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
print(self.fields.values()) # 所有字段对象组成的列表
print('>>>>>', field) # 每个字段对象
field.widget.attrs.update({'class': 'form-control'}) # 全局钩子,常用来验证两次密码输入是否正确
def clean(self):
pwd = self.cleaned_data.get('password', '') # 不写空字符串会显示None, None不能encode
# print(self.cleaned_data)
re_pwd = self.cleaned_data.get('re_password', '')
if pwd == re_pwd:
# 密码加密
md5 = hashlib.md5()
md5.update(pwd.encode('utf-8'))
pwd = md5.hexdigest()
# 把加密后的密码改写到cleaned_data里面
self.cleaned_data['password'] = pwd
return self.cleaned_data
self.add_error('re_password', '两次密码不一致')
raise ValidationError('两次密码不一致') # 这个全局的错误也必须写
# views.py文件

def register(request):
if request.method == 'GET':
form_obj = RegForm()
return render(request, 'register.html', {'form_obj': form_obj})
else:
form_obj = RegForm(request.POST)
# 对数据库进行校验
if form_obj.is_valid():
form_obj.save() # 把你提供的数据按照相应的位置插进去,有就插,没有就不插
return HttpResponse('ok')
# return redirect('login')
return render(request, 'register.html', {'form_obj': form_obj}) # 前端标签中label中for要写form_obj.字段名.id_for_label 这样就可以了

Django--CRM的更多相关文章

  1. Django CRM学员系统项目

    项目需求: 1.分讲师\学员\课程顾问角色,2.学员可以属于多个班级,学员成绩按课程分别统计3.每个班级至少包含一个或多个讲师4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员5.客户 ...

  2. django——CRM项目

    1.引言 CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销售循环 ...

  3. Django CRM客户关系管理系统

    CRM需求分析 随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现 ...

  4. Django CRM系统

    本节内容 业务痛点分析 项目需求讨论 使用场景分析 表结构设计 业务痛点分析 我2013年刚加入老男孩教育的时候,学校就一间教室,2个招生老师,招了学生后,招生老师就在自己的excel表里记录一下,每 ...

  5. Django - CRM项目(2)Q查询(模糊查询)

    一.CRM项目(2) 利用Q查询中的q对象完成条件筛选功能. 批量删除.公户转私户功能. 新增一张跟进记录表ConsultRecord,迁移数据库并添加测试数据,实现跟进记录列表页面. 客户列表新增跟 ...

  6. Django - CRM项目(3)

    一.CRM项目的业务逻辑与表结构梳理 1.分析业务逻辑 (1) 引流(sem) (2) 网络咨询师(客服):添加客户信息和查看客户,分配销售 (3) 销售:查看私户 添加跟进记录 失败:加入公户 成功 ...

  7. Django CRM __contains与__icontains区别

    http://www.yihaomen.com/article/python/199.htm operators = { 'exact': '= %s', 'iexact': 'LIKE %s', ' ...

  8. Django CRM查询 XXX.object.filter() 常用用法总结

    __gt 大于 __gte 大于等于 User.objects.filter(age__gt=10) // 查询年龄大于10岁的用户 User.objects.filter(age__gte=10) ...

  9. Django CRM 数据库增删改查

    原文链接 http://www.cnblogs.com/yangmv/p/5327477.html

  10. Django CRM查询(一对多,多对多以及相关的反查)

    Customer模型: class Customer(models.Model): name = models.CharField(max_length=32) qq = models.CharFie ...

随机推荐

  1. java读取properties中文乱码

    1 确认properties文件的编码是utf-8 2 采用流的方式读取文件,设置编码为utf-8 public class ErrorCodeConfig { static Properties p ...

  2. CSAPP:第三章程序的机器级表示2

    CSAPP:程序的机器级表示2 关键点:算术.逻辑操作 算术逻辑操作1.加载有效地址2.一元二元操作3.移位操作 算术逻辑操作   如图列出了x86-64的一些整数和逻辑操作,大多数操作分成了指令类( ...

  3. linux7 udev的生效

    这篇文章主要介绍在Oracle Linux 7中如何使用udev来设置用户自定义的设备名.在Oracle Linux 7 中的设置方法与之前的Linux版本有较大差别. 下面的例子的对/dev/sdb ...

  4. Java中class的getName()和getCanonicalName()两个方法的区别

    getName()返回的是虚拟机里面的class的表示 getCanonicalName()返回的是更容易理解的表示 对于普通类来说,二者没什么区别,只是对于特殊的类型上有点表示差异 比如byte[] ...

  5. hibernate(*.hbm.xml)中新添加的字段被标记为红色(找不到)的解决方法

    首先得是以这个方式生成的bean和xml,配置好了数据源(这样才能让hibernate中的配置和mysql进行交互) https://www.cnblogs.com/kinome/p/10549969 ...

  6. 面试 5:手写 Java 的 pow() 实现

    我们在处理一道编程面试题的时候,通常除了注意代码规范以外,千万要记得自己心中模拟一个单元测试.主要通过三方面来处理. 功能性测试 边界值测试 负面性测试 不管如何,一定要保证自己代码考虑的全面,而不要 ...

  7. redis-trib.rb命令详解

    redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境. 准备redis-tr ...

  8. RuntimeError: Model class apps.users.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

    报错代码: File "/home/bsodgm/Desktop/Django_projection/mall/apps/users/views.py", line 9, in & ...

  9. docker安装并修改Nginx镜像

    1.安装nginx镜像,命令:docker pull nginx 2.创建nginx容器,并启动,命令:docker run --name webserver -d -p 192.168.51.227 ...

  10. 我的微信小程序第三篇(app.json)

    前言 端午节回家了,所以好多天没有更新,只想说还是待在家里舒服呀,妈妈各种做好吃的,小侄子侄女各种粘着我在室外玩,导致我三天下来不仅胖了一圈,还黑了一圈,上班第一天有同事就说我晒黑了,哭~~~,为了防 ...