您的位置:首页 > 移动开发

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

2017-07-30 09:29 323 查看
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 AbstractUser

class 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 man
4000
age.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_name

class 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐