Django建教育平台(二)--Users App

来源:互联网 发布:html5自适应网站源码 编辑:程序博客网 时间:2024/06/08 01:31

1. 新建Users App

a. 点击pycharm Tools菜单--Run manage.py task

b. 输入startapp users

一般web app中, users表是需要第一个设置的.


2. 设计Users表

a. 设计Users表之前, 先看一下django默认的user表

①双击elearn数据表, ②然后双击all_user表


查看其中的字段:

id:主键

password:用户密码

last_login:最后一次登录时间

is_superuser:是否超级用户

username:用户名

first_name:英文名名字

last_name:英文名姓氏

email:email

is_staff:是否为员工

is_active:是否激活状态

date_joined:加入日期

b. 查看我们的网站users设计了哪些字段

以下是一个粗略设计图


可以看出昵称, 生日,性别,地址,手机号字段都没有在django自带的all_user中.

c. 增加我们需要的字段

users\models中修改代码:

from django.contrib.auth.models import AbstractUserclass UserProfile(AbstractUser):  # 继承Django自身的AbstractUser,沿用默认字段    nick_name = models.CharField(max_length=50, verbose_name="昵称", default="")  # 增加昵称字段, 默认为空""    birthday = models.DateField(verbose_name="生日", null=True, blank=True)  # 增加生日字段, 允许null与空    gender = models.CharField(choices=(("Male", "男"), ("female", "女")), max_length=6)  # 增加性别字段, 使用了choices选项    address = models.CharField(max_length=100, default="")  # 增加地址字段    mobile = models.CharField(max_length=11, null=True, blank=True)  # 增加手机字段    image = models.ImageField(upload_to="image/%Y/%m", default="image/default.png", max_length=100)  # 增加用户头像字段, image/%Y/%m代表上传时按年月文件夹进行, default设置的是默认头像路径    class Meta:        verbose_name = "用户信息"  # 设置UserProfle这个类的别名        verbose_name_plural = verbose_name  # 设置别名的复数形式    def __unicode__(self):        return self.username  # 当使用print打印时, 把继承的username字段打印出来

d. settings中注册users app

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'users',  # 新增该users app]AUTH_USER_MODEL = "users.UserProfile"  # 需要重载settings的方法, 注意不是写成users.models.UserProfile
e. 点击pycharm Run菜单-- Run--elearn_py3

Run的结果是报错, ImageField需要依赖Pillow包.

f. 安装Pillow包
在本虚拟环境中输入pip install Pillow

g. 重新Run elearn_py3

结果还是报错, 信息是没有users migrations


h. 对users进行migrations

点击Tools--Run manage.py task

输入makemigrations users


然后输入migrate users, 执行后出现以下询问:


询问我们是否要删除auth的user, 我们输入yes,确定删除

i. 在Navicat中查看新生成的数据表

①点击users_userprofile, ②点击设计表, 然后能看到各字段的设计.

已经能看到我们在models中新建的nick_name, gender等字段.


3. 设计Users App

a. 我们需要从整体出发, 考虑到各App之间的配合来设计单个App.


b. users models的设计


c. users models代码添加

from datetime import datetime# 中间不变代码省略class EmailVerifyRecord(models.Model):  # 邮箱验证码功能    code = models.CharField(max_length=20, 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)  # 验证码有时效性, 需要记录send time    class Meta:        verbose_name = "邮箱验证码"        verbose_name_plural = verbose_nameclass Banner(models.Model):  # 主页轮播图功能    title = models.CharField(max_length=100, verbose_name="标题")  # 轮播图标题    image = models.ImageField(upload_to="banner/%Y/%m", verbose_name="轮播图", max_length=100)  # 轮播图图像地址    url = models.URLField(max_length=200, verbose_name="访问地址")  # 轮播图的url    index = models.IntegerField(default=100, verbose_name="显示顺序")  # 轮播图的显示顺序编号    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")  # 轮播图添加时间    class Meta:        verbose_name = "轮播图"        verbose_name_plural = verbose_name


原创粉丝点击