项目开端

参考的是mxonline项目

先把这两项完成

  • 1.app设计
  • 2.app的models的设计

经过分析系统有四个模块

users       - 用户管理
course - 课程管理
oranization - 授课教师&授课机构
operation - 用户操作管理 一般系统都先设计用户模块, 把较为独立的模块也放在users模块

先设计user模块

- 用户详情里的字段有
image
nick_name
gender
brith
mobile
address

django默认自带用户表的字段无法满足,因此需要继承它并做扩展,让系统用我们继承过来的.

完成项目初始化

  • 创建项目
  • 创建app users
  • 写models修改认证表为自己的表

users/models.py

- 其中birthday字段类型是DateField
- gender是choices形式
- image头像是ImageField类型,并设置默认头像
- 修改表字段名称显示verbose_name
- 修改表名显示Meta - 这里继承AbstractUser表, 可以查看AbstractUser类,里面的字段正是系统默认的 import django.contrib.auth.models import AbstractUser # 定义了django默认的model class UserProfile(AbstractUser):
image = models.ImageField(upload_to="image/%Y/%m", default="image/default.png", max_length=100)
nick_name = models.CharField(max_length=50, verbose_name="昵称", default="")
gender = models.CharField(max_length=5, choices=(("male", "男"), ("female", "女")), default="female")
birthday = models.DateField(verbose_name="生日", null=True, blank=True)
mobile = models.CharField(max_length=11, verbose_name="手机", null=True, blank=True)
address = models.CharField(max_length=50, verbose_name="地址", default="") class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name def __str__(self):
return self.username
  • 修改settings.py,让django使用我们扩展的表.
app名字.对应model的class名

AUTH_USER_MODEL = "users.UserProfile"
  • 同步数据库,观察users表

循环引用问题

- 已经确定4个模块
users
courses
organization
operation - 循环引用
users: 用户课程 有这个字段
courses: 课程评论 有这个字段 彼此又要互相引用 user 外键 课程评论
courses 外键 用户课程 会造成循环引用问题,利用model分层设计解决 - model分层设计: 防止循环引用
3者之间的共同关系通过operation model来关联.
operation
___________|____________
| | |
users courses organization

邮箱验证码和广告条的model设计

users/models.py

- 较底层的model都放到users模型当中,如邮箱验证码,和广告条较为独立
- send_type是选择类型
- 发送邮件有时间,注意是datetime.now,发送时系统时间.没括号
- 轮播图需要地址URLField类型和前后顺序IntegerField class EmailVerifyRecord(models.Model):
code = models.CharField(max_length=10, verbose_name="验证码")
email = models.EmailField(max_length=50, verbose_name="邮箱")
send_type = models.CharField(choices=(("register", "注册"), ("forget", "忘记密码")), max_length=10)
send_time = models.DateTimeField(default=datetime.now) class Meta:
verbose_name = "邮箱验证码"
verbose_name_plural = verbose_name class Banner(models.Model):
title = models.CharField(max_length=100, verbose_name="标题")
image = models.ImageField(upload_to="banner/%Y/%m", verbose_name="轮播图")
url = models.URLField(max_length=200, verbose_name="访问地址")
index = models.IntegerField(default=200, verbose_name="顺序")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") class Meta:
verbose_name = "轮播图"
verbose_name_plural = verbose_name

表的字段小结

userprofile:
image
nickname
gender
tel
address emailrecord:
code
email
send_type
send_time banner:
name
url
index
add_time

[py][mx]django项目-让系统用自定义的users表认证的更多相关文章

  1. [py][mx]django自定义认证类-实现邮箱作为用户名登录

    创建自定义验证用户名密码类CustomBackend users/views.py from django.contrib.auth import authenticate, login from d ...

  2. [py][mx]django form验证-给db减压

    django form认证-解压db压力 一般系统都需要前后端都验证 前端验证容器逃逸破解,如通过js console口去发 试想如果后端只有db验证,那么前端无论发什么后端都查询一次db,对db压力 ...

  3. [py][mx]django处理登录逻辑

    浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...

  4. [py][mx]django课程页显示city和机构封面图

    city和课程机构信息展示到前台去 organization/views.py from django.views.generic.base import View from organization ...

  5. [py][mx]django模板继承-课程列表页

    课程列表页分析 1,机构类型 2,所在地区 3.排序 学习人数 先分析下 纵观页面,页头页脚都一样. django提供了模板继承. 至少 不同页面的title 面包屑路径 content内容不一致,以 ...

  6. [py][mx]django使用class写views-免去判断方法的烦恼

    修改views使用class模式 类模式写views - 免去了函数模式的判断的烦恼 users/views.py from django.views.generic import View clas ...

  7. [py][mx]django xadmin后台配置

    xadmin配置 - 安装 pip install -r https://github.com/sshwsfc/xadmin/blob/django2/requirements.txt 以下被我测试通 ...

  8. Django项目打分系统

    Django项目之个人网站 关注公众号"轻松学编程"了解更多. Github地址:https://github.com/liangdongchang/MyWeb.git 感兴趣的可 ...

  9. [py][mx]django自带后台系统使用

    django的manytomany字段和后台搜索过滤功能 后台开发一般要求 后台要求能快速搭建, 主要精力放在前端用户系统开发上. 权限管理 少量样式 快速开发 django自带的后台手动注册模型 创 ...

随机推荐

  1. PHP curl登录 跳过验证码

    <?php switch($_GET['do']){ case 'vc': $cookieFile = "./test.tmp"; $url = 'http://localh ...

  2. 【Linux】 centos 7 启用端口

    网上的大部分资料都是用iptables防火墙的,但是阿里云的centos 7默认防火墙是firewall.最为简单的方法其实就是关闭我们的防火墙: 1  查看下防火墙的状态: systemctl st ...

  3. echarts - 特殊需求实现代码汇总之【线图】篇

    时间过得好快,刚刚还是7月底,一转眼自己调整(浪费)了大半个月的时间.. 接下来要先总结一下自己之前的知识点,然后清掉自己的待办任务,重新轻装上阵! 继7月24的echarts-柱图配置汇总后,ech ...

  4. 开发常见错误之 : IMP-00058: 遇到 ORACLE 错误 1691

    IMP-00058: 遇到 Oracle 错误 1691ORA-01691: Lob 段YQPRO.SYS_LOB0000031467C00006$$无法通过128(在表空间YQPRO中)扩展这种情况 ...

  5. Elasticsearch学习之嵌套聚合,下钻分析,聚合分析

    1. 计算每个tag下的商品数量 GET /ecommerce/product/_search { "aggs": { "group_by_tags": { & ...

  6. iOS 循环引用 委托 (实例说明)

    如何避免循环引用造成的内存泄漏呢: 以delegate模式为例(viewcontroller和view之间就是代理模式,viewcontroller有view的使用权,viewcontroller同时 ...

  7. 解决Android 5.0中出现的警告:Service Intent must be explicit

    extends:http://www.eoeandroid.com/thread-568853-1-1.html 本帖最后由 469874851 于 2015-3-11 18:15 编辑 有些时候我们 ...

  8. SOA架构商城二 框架搭建

    1.创建父工程 创建Maven工程pingyougou-parent,选择packaging类型为pom ,在pom.xml文件中添加锁定版本信息dependencyManagement与plugin ...

  9. php---进行RSA进行非对称加密

    参考文档: https://blog.csdn.net/zhihua_w/article/details/74002212 http://www.bm8.com.cn/webtool/rsa/http ...

  10. img图片不存在时设置默认图片

    当在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验.即使使用alt属性给出了"图片XX"的提示信息,也起不了多大作用. 其实,可 ...