码迷,mamicode.com
首页 > 移动开发 > 详细

Django打造在线教育平台_day_2:新建users app 编写models之完善

时间:2017-06-23 15:51:27      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:技术   meta   分层   length   模块   banner   实例   har   ges   

1、避免循环引用:A引用B,B引用A

技术分享

解决这种问题的方法就是app分层,前面我们设计了4个app,现在把与用户操作相关的放在operation models.py中就可以解决问题:

技术分享

技术分享

2、邮箱验证码的models和banner轮播图的models都放在users/models.py文件中(因为与另外几个关系不大)

"""import规范:
    第一部分为python自带模块
    第二部分为第三方倒入模块
    第三部分为自定义模块
"""
from datetime import datetime

from django.db import models
class EmailVerifyRecord(models.Model):
    """邮箱验证码models"""
    code = models.CharField(max_length=20, verbose_name=u验证码)
    email = models.EmailField(max_length=50, verbose_name=u邮箱)

    # 邮箱验证码有两种类型:注册和找回忘记的密码
    send_type = models.CharField(choices=((register, u注册),(forget,u找回密码)), max_length=10)

    # 验证码发送时间
    # 这里注意now后面不能加(),加了时间就是类编译的时间,不加就是实例化的时间,这里是需要实例化时间
    send_time = models.DateTimeField(default=datetime.now)

    class Meta:
        verbose_name = u邮箱验证码
        verbose_name_plural = verbose_name

class Banner(models.Model):
    """轮播图models"""
    title = models.CharField(max_length=100, verbose_name=u标题)
    image = models.ImageField(upload_to=banner/%Y/%m, verbose_name=u轮播图, max_length=100)
    url = models.URLField(max_length=200, verbose_name=u访问地址)
    index = models.IntegerField(default=100, verbose_name=u轮播顺序)
    add_time = models.DateTimeField(default=datetime.now, verbose_name=u添加时间)

    class Meta:
        verbose_name = u轮播图
        verbose_name_plural = verbose_name

users/models.py全代码,如下

"""import规范:
    第一部分为python自带模块
    第二部分为第三方倒入模块
    第三部分为自定义模块
"""
from datetime import datetime

from django.db import models

# AbstractUser包含的Django默认生成的user字段
from django.contrib.auth.models import AbstractUser
# Create your models here.

class UserProfile(AbstractUser):
    """继承AbstractUser类,自字义新类添加数据库字段"""
    # default=‘‘默认为空
    nick_name = models.CharField(max_length=50, verbose_name=u昵称, default=‘‘)
    # null=True, blank=True允许用户不填写
    birday = models.DateField(verbose_name=u生日, null=True, blank=True)

    # choices属性, 提供被选数据,这里性别只有男和女
    gender = models.CharField(max_length=5, choices=((male,u), (female, u)), default=female, verbose_name=u性别) #性别
    address = models.CharField(max_length=100, default=u‘‘, verbose_name=u地址)
    mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name=u手机号)
    # upload_to指定头像上传文件夹
    image = models.ImageField(upload_to=image/%Y/%m, default=uimage/default.png, verbose_name=u头像,max_length=100)

    class Meta:
        verbose_name = r用户信息
        verbose_name_plural = verbose_name

    def __unicode__(self):
        """重载函数,使自定义字符串能打印"""
        return self.username


class EmailVerifyRecord(models.Model):
    """邮箱验证码models"""
    code = models.CharField(max_length=20, verbose_name=u验证码)
    email = models.EmailField(max_length=50, verbose_name=u邮箱)

    # 邮箱验证码有两种类型:注册和找回忘记的密码
    send_type = models.CharField(choices=((register, u注册),(forget,u找回密码)), max_length=10)

    # 验证码发送时间
    # 这里注意now后面不能加(),加了时间就是类编译的时间,不加就是实例化的时间,这里是需要实例化时间
    send_time = models.DateTimeField(default=datetime.now)

    class Meta:
        verbose_name = u邮箱验证码
        verbose_name_plural = verbose_name

class Banner(models.Model):
    """轮播图models"""
    title = models.CharField(max_length=100, verbose_name=u标题)
    image = models.ImageField(upload_to=banner/%Y/%m, verbose_name=u轮播图, max_length=100)
    url = models.URLField(max_length=200, verbose_name=u访问地址)
    index = models.IntegerField(default=100, verbose_name=u轮播顺序)
    add_time = models.DateTimeField(default=datetime.now, verbose_name=u添加时间)

    class Meta:
        verbose_name = u轮播图
        verbose_name_plural = verbose_name

 

Django打造在线教育平台_day_2:新建users app 编写models之完善

标签:技术   meta   分层   length   模块   banner   实例   har   ges   

原文地址:http://www.cnblogs.com/jp-mao/p/7069586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!