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)裡面去。
fromdjango.contrib.auth.models
import
user
class
employee(models
.model
):user
=models
.onetoonefield
(user
)
department採用abstactuser方式擴充套件使用者表=models
.charfield
(max_length
=100
)
生成使用者表一張
擴充套件的資訊會加到request.user(session)裡面去。
許可權機制也儲存下來了
classprofile_user(abstractuser):
phone = models.charfield(max_length=30)
qq = models.charfield(max_length=30)
classmeta
:
db_table ='profile_user'
在user當中所以採用繼承的方式擴充套件使用者字段需要在settings裡面設定class
meta(abstractuser.meta):
= 'auth_user_model'
auth_user_model
= 'log.user'
因為就有兩個user model 了,所以需要說明
clas meta:user ->abstactuser->abstractbaseuser(基類) permissionmixin(控制許可權)db_table
= 'profile_user'
定義了表的名字,不會在資料表當中加上額外的字段
abstract = true 表明為django抽象類,在meta當中加上這個使得這個model不會再資料庫當中生成資料表
abstartuser還有一些方法可以給使用者傳送郵件
objects = usermanager()
有建立建立使用者和超級使用者兩個方法
#採用email
方式註冊使用者,刪除
first_name
與last_name,
新增phone與qq
欄位#這個時候可以繼承基類,修改抽象類
class
profile_user
(abstractbaseuser,permissionsmixin)
= 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
= 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
def
get_short_name
(self):
"returns the short name for the user."
return
self
from django.contrib.auth.models import abstractbaseuser,user,abstractuser,\還需要匯入各種的modelusermanager,permissionsmixin,baseusermanager
繼承擴充套件使用者這種方式需要在admin當中註冊user
from information.models import profile_user# register your models here.
admin.site.register(profile_user)
from django.contrib.auth.models import abstractuser像這種繼承過來的,父類裡面已經有username,子類就不能覆蓋原有的username的字段了。# create your models here.
class
user(abstractuser):
username = models.charfield(max_length=
30, verbose_name='帳號
')class
meta
:verbose_name = '使用者
'verbose_name_plural = verbose_name
擴充套件使用者資訊的方式。要麼繼承的方式,要麼關聯的方式。
來自為知筆記(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...