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


    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=u'image/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

    3、在数据库生成新定义的表,Tools 工具栏运行 run manage.py Task输入:

    makemigrations users
    migrate users
  • 相关阅读:
    第十八周作业
    第十七周作业
    第十六周作业
    第十五周作业
    第十四周作业
    第十三周作业
    第十二周作业
    第二阶段考试
    第十周作业
    启航,带着梦想出发!
  • 原文地址:https://www.cnblogs.com/jp-mao/p/7069586.html
Copyright © 2020-2023  润新知