欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django3中的自定義用戶模型實例詳解

 更新時間:2020年08月23日 16:49:48   作者:mindg.cn  
這篇文章主要給大家介紹了關于Django3中自定義用戶模型的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

介紹

嗨,在這篇文章中,我們將學習在Django 3中創(chuàng)建自定義用戶模型,并且還將更改Django Admin的默認登錄功能。 我們將使用電子郵件和密碼登錄。

動機

我必須為我的應用程序創(chuàng)建一個“自定義用戶”,我能夠創(chuàng)建模型,但問題是createsuperuser命令無法正常工作。 為了調試它,我不得不做大量研究,問題是當時大多數(shù)資源已經(jīng)過時,所以我決定寫這篇文章。

我做了一個GitHub倉庫,所以如果您愿意,可以直接使用它(這里有說明)

讓我們開始吧

首先,創(chuàng)建一個Django Project并創(chuàng)建一個名為users的應用程序

現(xiàn)在我們可以開始在用戶應用程序中編輯models.py文件了

在進行編輯之前,先做一些理論上的準備。

Django中的經(jīng)理是什么?

Manager是一個接口,通過該接口可以將數(shù)據(jù)庫查詢操作提供給Django模型。 Django應用程序中的每個模型至少都有一個Manager。-Django Docs

簡單地說,經(jīng)理為我們提供了一種管理模型的方法。 我們可以通過使模型成為Manager類的子類來實現(xiàn)此目的。 管理器類是可以編輯諸如createsuperuser之類的命令的地方。

現(xiàn)在打開models.py并將以下代碼放入其中

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


class UserManager(BaseUserManager):
 def create_user(self, email, password=None):
  """
  Creates and saves a User with the given email and password.
  """
  if not email:
   raise ValueError('Users must have an email address')

  user = self.model(
   email=self.normalize_email(email),
  )

  user.set_password(password)
  user.save(using=self._db)
  return user

 def create_superuser(self, email, password):
  """
  Creates and saves a superuser with the given email and password.
  """
  user = self.create_user(
   email,
   password=password,
  )
  user.is_staff = True
  user.is_superuser = True
  user.save(using=self._db)
  return user


class CustomUser(AbstractBaseUser, PermissionsMixin):
 name = models.CharField(max_length=50, default='Anonymous')
 email = models.EmailField(max_length=100, unique=True)

 username = None

 USERNAME_FIELD = 'email'
 REQUIRED_FIELDS = []

 session_token = models.CharField(max_length=10, default=0)

 active = models.BooleanField(default=True)
 # a admin user; non super-user
 is_staff = models.BooleanField(default=False)
 is_superuser = models.BooleanField(default=False) # a superuser

 created_at = models.DateTimeField(
  auto_now_add=True, blank=True, null=True)
 updated_at = models.DateTimeField(auto_now=True)

 objects = UserManager()

這里要注意的最重要的事情是is_staff和is_superuser屬性。 在其中輸入錯誤可能會導致調試困難。

我們在這里做了什么?

我們已經(jīng)為我們的用戶模型進行了管理。 在其中,我們制作了兩個函數(shù),分別稱為create_user和create_superuser。
顧名思義,create_user將創(chuàng)建一個新用戶,并通過將is_staff和is_superuser設置為true來使用create_superuser創(chuàng)建一個超級用戶。

經(jīng)理之后,我們便有了通常的模式。

我們將用戶名設置為none,因為我們不想包含用戶名。

其中的USERNAME_FIELD表示我們聲明為“電子郵件”。 這應該是唯一的。

session_token是一個可選字段。 我在那里,因為我正在制作我的自定義令牌。

models.py的最后一行指示CustomUser是UserManager的對象。

重要的事情

制作完模型后,打開settings.py文件并在其中添加一行

AUTH_USER_MODEL = 'users.CustomUser'

Django允許您通過為AUTH_USER_MODEL設置提供一個引用自定義模型的值來覆蓋默認用戶模型。 這條虛線對描述了Django應用程序的名稱(必須在您的INSTALLED_APPS中),以及您希望用作用戶模型的Django模型的名稱。 -Django文檔

最后步驟

現(xiàn)在,您可以運行遷移命令并創(chuàng)建超級用戶。

py manage.py makemigrations
py manage.py migrate
py manage.py createsuperuser

它將要求您提供電子郵件和密碼。 詳細說明。

不要忘記在管理員中注冊該應用

admin.site.register(CustomUser)

現(xiàn)在,您可以運行服務器并在管理面板中使用您的電子郵件和密碼登錄。

如果您有任何建議,請告訴我。

git:https://github.com/theshubhagrwl/django_custom_user_app

總結

到此這篇關于Django3中的自定義用戶模型的文章就介紹到這了,更多相關Django3自定義用戶模型內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現(xiàn)用戶名密碼校驗

    python實現(xiàn)用戶名密碼校驗

    這篇文章主要為大家詳細介紹了python實現(xiàn)用戶名密碼校驗,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python控制臺打印log輸出重復的解決方法

    python控制臺打印log輸出重復的解決方法

    在學習了python的函數(shù)式編程后,又接觸到了logging這樣一個強大的日志模塊。這篇文章主要給大家介紹了關于python控制臺打印log輸出重復的解決方法,需要的朋友可以參考下
    2021-05-05
  • 跟老齊學Python之玩轉字符串(1)

    跟老齊學Python之玩轉字符串(1)

    本文主要講訴了字符串的定義,變量鏈接到字符串,以及對字符串的簡單操作,都是些非?;A的東西,適合零基礎的Pythoner學習,覺得有用的話,多鼓鼓掌吧
    2014-09-09
  • Python 批量讀取文件中指定字符的實現(xiàn)

    Python 批量讀取文件中指定字符的實現(xiàn)

    這篇文章主要介紹了Python 批量讀取文件中指定字符的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • python檢查URL是否正常訪問的小技巧

    python檢查URL是否正常訪問的小技巧

    檢查一個URL是否正常很容易,如果檢查2000個URL,或者是大批量的URL怎么辦?這篇文章就為大家介紹了python檢查URL是否正常訪問的小技巧,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Django模板獲取field的verbose_name實例

    Django模板獲取field的verbose_name實例

    這篇文章主要介紹了Django模板獲取field的verbose_name實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python列表切片操作實例探究(提取復制反轉)

    Python列表切片操作實例探究(提取復制反轉)

    在Python中,列表切片是處理列表數(shù)據(jù)非常強大且靈活的方法,本文將全面探討Python中列表切片的多種用法,包括提取子列表、復制列表、反轉列表等操作,結合豐富的示例代碼進行詳細講解
    2024-01-01
  • python使用KNN算法識別手寫數(shù)字

    python使用KNN算法識別手寫數(shù)字

    這篇文章主要為大家詳細介紹了python使用KNN算法識別手寫數(shù)字,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 解決Python中導入自己寫的類,被劃紅線,但不影響執(zhí)行的問題

    解決Python中導入自己寫的類,被劃紅線,但不影響執(zhí)行的問題

    這篇文章主要介紹了解決Python中導入自己寫的類,被劃紅線,但不影響執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 四個Python操作Excel的常用腳本分享

    四個Python操作Excel的常用腳本分享

    在數(shù)字化時代,很多人工作中經(jīng)常和excel打交道。本文和大家分享四個Python操作excel的腳本,讓你工作效率更高,需要的小伙伴可以參考一下
    2022-11-11

最新評論