Django 使用者字段資料擴充套件及登入介面認證

2021-09-12 06:23:08 字數 3183 閱讀 7989

user 表 構成

系統自動生成的表結構如下:

id : 序號

password : 密碼

last_login : 最後一次登入

is_superuser: 是否是超級使用者

username : 使用者名稱

first_name :姓

last_name : 名

email : 郵箱

is_staff : 是否是員工,

is_active : 是否啟用

date_joined : 註冊時間

擴充套件使用者表 – 自定義使用者表 userprofile

from django.contrib.auth.models import abstractuser

class userprofile(abstractuser):

nick_name = models.charfield('暱稱',max_length=50,default='')

...

過載 auth_user_model

案例: auth_user_model = 'users.userprofile'

直接 編寫 登入驗證介面 檢視,

# 獲取使用者提交的使用者名稱和密碼

user_name = request.post.get('username', none)

pass_word = request.post.get('password', none)

# 成功返回user物件,失敗none

user = authenticate(username=user_name, password=pass_word)

# 如果不是null說明驗證成功

if user is not none:

# 登入

login(request, user)

return jsonresponse()

else:

return jsonresponse()增加 forms 進行驗證

先建 forms.py

from django import forms

class loginform(forms.form):

username = forms.charfield(required=true)

password = forms.charfield(required=true, min_length=5)

檢視函式增加 form 驗證:

# 獲取使用者提交的使用者名稱和密碼

user_name = request.post.get('username', none)

pass_word = request.post.get('password', none)

# 成功返回user物件,失敗none

user = authenticate(username=user_name, password=pass_word)

# 如果不是null說明驗證成功

if user is not none:

# 登入

login(request, user)

return jsonresponse()

else:

return jsonresponse()

else:

return jsonresponse()增加支援 郵箱 登入驗證

from django.contrib.auth.backends import modelbackend

from .models import userprofile

from django.db.models import q

#郵箱和使用者名稱都可以登入

# 基礎modelbackend類,因為它有authenticate方法

class custombackend(modelbackend):

def authenticate(self, request, username=none, password=none, **kwargs):

try:

# 不希望使用者存在兩個,get只能有乙個。兩個是get失敗的一種原因 q為使用並集查詢

user = userprofile.objects.get(q(username=username)|q(email=username))

# django的後台中密碼加密:所以不能password==password

# userprofile繼承的abstractuser中有def check_password(self, raw_password):

if user.check_password(password):

return user

except exception as e:

return none

顯示table欄位資料

select case when a.colorder 1 then d.name else end 表名,a.colorder 字段序號,a.name 欄位名,case when columnproperty a.id,a.name,isidentity 1 then else end 標識,ca...

BLOB欄位資料讀取

因為開發的時候公司的專案,所以只能說明不能截圖了,在這裡請大家諒解。blob這個字段,首先是存大資料的,本人倒是不建議在資料庫中存入那麼大的資料,影響伺服器效能。而且如果表沒有採用分布儲存,沒有考慮維護,一段時間就會很大,本人一點見解,表大小超過1g的容量時候,明顯影響資料讀取速度。這個扯的有點遠了...

django使用者資訊擴充套件

django封裝了好多東西,拿來用就可以了,幫我們封裝類使用者的登入認證,使用者的表 所以django自帶有使用者表,當擴充套件使用者表後一些表就會被替換 使用者認證相關的 功能放在 django.contrib.auth 的乙個主要處理使用者資訊,許可權,認證 django遵循 開閉原則 所以不修...