【項目django-後端03】登錄

 

目錄

 

 

一。關係用戶系統:

一。自定義User模型:

1,創建文件app>xfzauth>models.py(用戶名的邏輯)

2,執行數據庫(執行)

3,創建視圖views.py

4,創建forms.py


 


 

 

一。關係用戶系統:

  1. 使用Django內置User系統
  2. 需要重新定製
  3. 前後臺使用同一個User系統

一。自定義User模型:

  1. 創建一個用戶,管理用戶信息
  2. 全部重寫,繼承自AbstractBaseUser
  3. 定義UserManager
  4. 設置AUTH_USER_MODEL
  5. 映射到數據庫中

-------------------------------------------

1,創建文件app>xfzauth>models.py(用戶名的邏輯)

#encoding: utf-8

from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager
from shortuuidfield import ShortUUIDField
from django.db import models


class UserManager(BaseUserManager):
    def _create_user(self,telephone,username,password,**kwargs):
        if not telephone:
            raise ValueError('請傳入手機號碼!')
        if not username:
            raise ValueError('請傳入用戶名!')
        if not password:
            raise ValueError('請傳入密碼!')

        user = self.model(telephone=telephone,username=username,**kwargs)
        user.set_password(password)
        user.save()
        return user

    def create_user(self,telephone,username,password,**kwargs):
        kwargs['is_superuser'] = False
        return self._create_user(telephone,username,password,**kwargs)

    def create_superuser(self,telephone,username,password,**kwargs):
        kwargs['is_superuser'] = True
        kwargs['is_staff'] = True
        return self._create_user(telephone,username,password,**kwargs)


class User(AbstractBaseUser,PermissionsMixin):
    # 我們不使用默認的自增長的主鍵
    # id:100,101,102,103
    # uuid/shortuuid
    # Shortuuidfield:pip install django-shortuuidfield
    uid = ShortUUIDField(primary_key=True)
    telephone = models.CharField(max_length=11,unique=True)
    email = models.EmailField(unique=True,null=True)
    username = models.CharField(max_length=100)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    data_joined = models.DateTimeField(auto_now_add=True)

    USERNAME_FIELD = 'telephone'
    # telephone,username,password
    REQUIRED_FIELDS = ['username']
    EMAIL_FIELD = 'email'

    objects = UserManager()

    def get_full_name(self):
        return self.username

    def get_short_name(self):
        return self.username

2,執行數據庫(執行)

migrate

3,創建視圖views.py

4,創建forms.py

5,創建xfz>>utils(存放工具)

5.1創建utils》》restful.py(返回)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章