django使用者資訊擴充套件

2022-09-07 03:06:11 字數 4522 閱讀 9926

django封裝了好多東西,拿來用就可以了,幫我們封裝類使用者的登入認證,使用者的表

所以django自帶有使用者表,當擴充套件使用者表後一些表就會被替換

使用者認證相關的    功能放在

django.contrib.auth

的乙個主要處理使用者資訊,許可權,認證

django遵循

開閉原則

所以不修改源**,方便框架公升級

採用新增的方式

繼承源**

auth_user

裡面的 

is_staff 

是否可以登入admin後台

is_active賬戶是否啟用,可以登入後台

date_joined帳號建立時間

last_login上一次登入的時間

這些預設使用者資訊的引用庫的位置

django.contrib.auth.models

進行引用

在django\contrib\auth\models.py

裡面配置完之後需要在settings.py裡面進行設定

採用profile方式(關聯的方式)進行使用者資訊擴充套件

生成的兩張表,會從兩張表中去查
擴充套件的資訊不會加到request.user(session)裡面去。

from

django.contrib.auth.models

import

user

class

employee

(models

.model

):user

=models

.onetoonefield

(user

)

department

=models

.charfield

(max_length

=100

)

採用abstactuser方式擴充套件使用者表

生成使用者表一張
擴充套件的資訊會加到request.user(session)裡面去。
許可權機制也儲存下來了

class 

profile_user(abstractuser):

phone = models.charfield(max_length=

30)

qq = models.charfield(max_length=

30)

class 

meta

:

db_table = 

'profile_user'

在user當中

class

meta(abstractuser.meta):

= 'auth_user_model'

所以採用繼承的方式擴充套件使用者字段需要在settings裡面設定

auth_user_model

= 'log.user'

因為就有兩個user model 了,所以需要說明

clas meta:

db_table 

= 'profile_user'

定義了表的名字,不會在資料表當中加上額外的字段

user ->abstactuser->abstractbaseuser(基類) permissionmixin(控制許可權)

abstract = true 表明為django抽象類,在meta當中加上這個使得這個model不會再資料庫當中生成資料表

abstartuser還有一些方法可以給使用者傳送郵件

objects = usermanager()

有建立建立使用者和超級使用者兩個方法

#

採用email

方式註冊使用者,刪除

first_name

與last_name,

新增phone與qq

欄位#這個時候可以繼承基類,修改抽象類

class

profile_user

(abstractbaseuser,permissionsmixin)

:email

= models.emailfield(_(

'email address'

), blank

=true

,unique

= true

) 這裡需要新增unique,主鍵

is_staff

= models.booleanfield(

_('staff status'

),default

=false

,help_text=_(

'designates whether the user can log into this admin site.'),)

is_active

= models.booleanfield(

_('active'

),default

=true

,help_text=_(

'designates whether this user should be treated as active. '

'unselect this instead of deleting accounts.'),)

date_joined

= models.datetimefield(_(

'date joined'

), default

=timezone.now)

objects

= userprofilemanager()

這裡要定義登入

superuser的

username帳號,superuser

username_field 

= 'email'

這裡定義儲存帳號

required_fields

=

這裡是必須要的帳號

phone

= models.charfield(max_length=30

)qq

= models.charfield(max_length=30

)def

get_full_name

(self

):

需要定義這裡,改變登陸發方式後這裡有所改變

"""returns the first_name plus the last_name, with a space in between.

"""return

self

.email

def

get_short_name

(self):

"returns the short name for the user."

return

self

.email

from django.contrib.auth.models import abstractbaseuser,user,abstractuser,\

usermanager,permissionsmixin,baseusermanager

還需要匯入各種的model

繼承擴充套件使用者這種方式需要在admin當中註冊user

from information.models import profile_user

# register your models here.

admin.site.register(profile_user)

from django.contrib.auth.models import abstractuser

# create your models here.

class

user(abstractuser):

username = models.charfield(max_length=

30, verbose_name='帳號

')class

meta

:verbose_name = '使用者

'verbose_name_plural = verbose_name

像這種繼承過來的,父類裡面已經有username,子類就不能覆蓋原有的username的字段了。

擴充套件使用者資訊的方式。要麼繼承的方式,要麼關聯的方式。

來自為知筆記(wiz)

Membership使用者資訊擴充套件

public static datatable listuser string userroles 列出指定組的使用者資訊 return dt public static void deleteuser string username 刪除指定使用者 public static void updat...

django使用JWT儲存使用者登入資訊

更多程式設計教程請到 菜鳥教程 高州陽光論壇 人人影視 在使用前必須弄明白jwt的相關知識,可以看我的另一篇博文 什麼是jwt?json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式...

django學習日誌之自定義使用者擴充套件

django 為我們提供了強大的使用者認證系統,並且提供了基於該系統的user模型,所以,很多時候,我們有必要對自己的user進行業務擴充套件,得到滿足我們自己業務需求的user。藉此,寫下自己的感悟。user內建屬性如下 username 使用者名稱,必需字段。30個字元或更少,包含 和 字元。f...