最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

介紹

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

動機(jī)

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

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

讓我們開始吧

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

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

在進(jìn)行編輯之前,先做一些理論上的準(zhǔn)備。

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

Manager是一個接口,通過該接口可以將數(shù)據(jù)庫查詢操作提供給Django模型。 Django應(yīng)用程序中的每個模型至少都有一個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屬性。 在其中輸入錯誤可能會導(dǎo)致調(diào)試?yán)щy。

我們在這里做了什么?

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

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

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

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

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

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

重要的事情

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

AUTH_USER_MODEL = 'users.CustomUser'

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

最后步驟

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

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

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

不要忘記在管理員中注冊該應(yīng)用

admin.site.register(CustomUser)

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

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

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

總結(jié)

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

相關(guān)文章

  • python類:class創(chuàng)建、數(shù)據(jù)方法屬性及訪問控制詳解

    python類:class創(chuàng)建、數(shù)據(jù)方法屬性及訪問控制詳解

    下面小編就為大家?guī)硪黄猵ython類:class創(chuàng)建、數(shù)據(jù)方法屬性及訪問控制詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 在PyCharm中高效使用遠(yuǎn)程文件編輯功能的實現(xiàn)

    在PyCharm中高效使用遠(yuǎn)程文件編輯功能的實現(xiàn)

    PyCharm作為業(yè)界領(lǐng)先的集成開發(fā)環(huán)境(IDE),提供了強(qiáng)大的本地和遠(yuǎn)程開發(fā)功能,本文詳細(xì)介紹了如何在PyCharm中使用遠(yuǎn)程文件編輯功能,希望能夠幫助你提高遠(yuǎn)程開發(fā)的效率和體驗
    2024-08-08
  • Python高級編程之繼承問題詳解(super與mro)

    Python高級編程之繼承問題詳解(super與mro)

    這篇文章主要介紹了Python高級編程之繼承問題,結(jié)合實例形式詳細(xì)分析了Python多繼承、MRO順序及super調(diào)用父類等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 基于python讀取圖像的幾種方式匯總

    基于python讀取圖像的幾種方式匯總

    Python進(jìn)行圖片處理,第一步就是讀取圖片,下面這篇文章主要給大家介紹了關(guān)于基于python讀取圖像的幾種方式的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • python自動發(fā)郵件庫yagmail的示例代碼

    python自動發(fā)郵件庫yagmail的示例代碼

    本篇文章主要介紹了python自動發(fā)郵件庫yagmail的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python內(nèi)置函數(shù)round()的用法和注意事項詳解

    Python內(nèi)置函數(shù)round()的用法和注意事項詳解

    這篇文章主要介紹了Python中round()函數(shù)的相關(guān)資料,包括其基本語法、使用示例和注意事項,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 詳解Python 切片語法

    詳解Python 切片語法

    Python的切片是特別常用的功能,主要用于對列表的元素取值。這篇文章主要介紹了詳解Python 切片語法,需要的朋友可以參考下
    2019-06-06
  • 使用Python的Zato發(fā)送AMQP消息的教程

    使用Python的Zato發(fā)送AMQP消息的教程

    這篇文章主要介紹了使用Python的Zato發(fā)送AMQP消息的教程,主要是基于一些Zato的圖形化界面進(jìn)行操作,需要的朋友可以參考下
    2015-04-04
  • python3+PyQt5使用數(shù)據(jù)庫窗口視圖

    python3+PyQt5使用數(shù)據(jù)庫窗口視圖

    這篇文章主要為大家詳細(xì)介紹了python3+PyQt5使用數(shù)據(jù)庫窗口視圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python中__del__方法的使用方法詳細(xì)解析

    Python中__del__方法的使用方法詳細(xì)解析

    __del__()稱為“析構(gòu)方法”,用于實現(xiàn)對象被銷毀時所需的操作,下面這篇文章主要給大家介紹了關(guān)于Python中__del__方法的使用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02

最新評論

九寨沟县| 奉贤区| 莱西市| 会东县| 新巴尔虎右旗| 桐庐县| 通化市| 开江县| 馆陶县| 罗源县| 阳西县| 旅游| 哈尔滨市| 改则县| 玉田县| 广西| 德化县| 崇阳县| 若羌县| 新建县| 泰宁县| 延吉市| 临江市| 东宁县| 康乐县| 昭苏县| 石门县| 涟源市| 寿光市| 满洲里市| 大庆市| 同心县| 师宗县| 蒲江县| 柘城县| 高阳县| 饶平县| 巴东县| 博野县| 黔江区| 右玉县|