Django打造線上教育平台_day_2:建立users app 編寫models之完善

來源:互聯網
上載者:User

標籤:技術   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 datetimefrom django.db import modelsclass 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_nameclass 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 datetimefrom 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.usernameclass 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_nameclass 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之完善

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.