162 擴充套件User模型 使用Proxy模型

2021-10-03 03:26:45 字數 1827 閱讀 3779

django內建的user模型雖然已經足夠強大了,但是有時候還是不能滿足我們的需求,比如在驗證使用者登入的時候,它用的是使用者名稱作為驗證,而我們有時候需要通過手機號碼或者是郵箱進行驗證,還有比如我們想要增加一些字段,那麼這時候我們就需要擴充套件使用者模型了,擴充套件使用者模型有多種方式。

1.設定proxy模型(設定**的形式):

如果你對django中提供的字段,已經驗證方式都比較滿意,最主要的就是不需要新增任何的字段,只是需要在原有的基礎上增加一些操作的方法,那麼建議使用這種方式,這種方式操作起來非常簡單,並且可以通過**的形式來為原有的模型定義一些方法、屬性等,但是不能再原有欄位的基礎上定義其他的字段。models.py檔案示例**如下:

from django.db import models

from django.contrib.auth.models import user

class

person

(user)

:class

meta

:-設定proxy=

true,標記該模型不用對映到資料庫中,只是乙個**-

->

proxy =

true

-定義乙個類方法,cls就是當前的類物件,即user-

->

@classmethod

defget_blacklist

(cls)

:return cls.objects.

filter

(is_active=

false

)

在views.py檔案中,應用user**模型定義的方法get_blacklist()獲取所有的is_active為false的使用者。
from

, context=context)

在proxy.html中接收檢視函式中的上下文。
>

>

未啟用的賬號:}li

>

ul>

在瀏覽器中,就會顯示當前資料庫中is_active為false的使用者。

在以上示例中,我們定義了乙個person類,繼承自user,並且在meta中設定了proxy=true,說明這個只是user的乙個**模型。它並不會影響原來user模型在資料庫中的表的結構。以後如果你想方便的獲取所有黑名單的人(賬號不能使用的使用者),那麼就可以通過person.get_blacklist()就可以獲取到,並且user.objects.all()和person.objects.all()是相同的,因為他們都是從user這個模型中獲取所有的資料。

Django擴充套件內建User類

內建user類 使用內建user可以方便實現登入驗證,利用admin管理介面還可以方便新增 刪除 修改使用者。乙個內建的user類定義了以下字段 username 使用者名稱 password 密碼 first name 姓名first last name 姓名last email 郵箱 group...

Django 使用者認證系統 拓展 User 模型

本教程為系列教程,為方便閱讀,每篇教程開頭列出全部教程的目錄索引 django 使用者認證系統提供了乙個內建的 user 物件,用於記錄使用者的使用者名稱,密碼等個人資訊。對於 django 內建的user模型,僅包含以下一些主要的屬性 對於一些 來說,使用者可能還包含有暱稱 頭像 個性簽名等等其它...

Django內建模型User常見的操作

常見的方法有 create user 建立普通使用者,會對密碼進行加密 create superuser 建立超級使用者,會對密碼進行加密 set password 對密碼進行加密 username password email is superuser is staff is active 如果u...