1. 程式人生 > >Django打造在線教育平臺_day_2:新建users app 編寫models之擴展user表

Django打造在線教育平臺_day_2:新建users app 編寫models之擴展user表

sage 模塊 出現 pill upload strac 自定義user apps res

1、使用pycharm創建app

  Tools 工具欄運行 run manage.py Task

  輸入:startapp users

2、查看django生成的默認的users表auth_user,看字段能否滿足需要的,不能就在users/models.py中編寫models自定義user表繼承auth_user的字段。

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,), (female, )), 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

3、在MxOnline/settings.py中註冊app和重載方法

# Application definition

INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    users,  # 註冊App
]
# 重載AUTH_USER_MODEL方法,app名稱+自定義models類名
AUTH_USER_MODEL = users.UserProfile

4、運行項目,出現如下錯誤,原因是我們處自義類中用到了ImageField,需要安裝Pillow圖片處理模塊:

技術分享

  安裝Pillow:pip install pillow,重新運行,報如下錯誤,原因是數據庫沒有users表

技術分享

  創建users表:

  Tools 工具欄運行 run manage.py Task

  輸入:makemigrations users

  輸入:migrate users

  輸入:yes

  查看數據庫表格輸入users_userprofile創建成功

再運行項目,成功

技術分享

Django打造在線教育平臺_day_2:新建users app 編寫models之擴展user表