django 中User的重寫

2021-08-21 09:24:06 字數 1851 閱讀 7991

django本身的auth_user 只包含了基本的資訊包括使用者名稱,密碼,郵箱以及註冊時間和最新的登入時間,但是這些欄位很難滿足我們的要求,有時我們想記錄使用者更多的資訊,例如手機號等資訊,這時就需要在auth_user 的基礎上增加字段,django自定義user網上有四種方法。

1,是官網上推薦的方法,就是增加乙個表auth_profile,其中以auth_user 表中的id作為forgein key將兩個表過關聯起來,這樣可以在auth_profile 中增加多個使用者的資訊。

2,另外一種是修改django的原始碼,這種方法簡單暴力直接,但是這種方法可移植性差,不利於多專案部署。

3,重寫user,也就是繼承abstractuser和permissions兩個類,其實django的user model也是繼承自這兩個類,因此你可以做類似user的定義方法定義user。

第一種大多數人都會用,第二種不推薦用,第三種寫起來比較麻煩,在這裡我就寫下第四種的寫法

from datetime import datetime

from django.db import models

from django.contrib.auth.models import abstractuser

class

userprofile

(abstractuser):

""" 使用者

"""name = models.charfield(max_length=30, null=true, blank=true, verbose_name="姓名")

birthday = models.datefield(null=true, blank=true, verbose_name="出生年月")

gender = models.charfield(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female", verbose_name="性別")

mobile = models.charfield(null=true, blank=true, max_length=11, verbose_name="**")

email = models.emailfield(max_length=100, null=true, blank=true, verbose_name="郵箱")

class

meta:

verbose_name = "使用者"

verbose_name_plural = verbose_name

def__str__

(self):

return self.username

在settings 檔案中

# 增加一句  這局必須的寫上 因為後面的方法會用到這個配置

# 將自定義的user 寫入

auth_user_model = 'users.userprofile'

# 在這裡加乙個增加 source rouce的方法

import sys

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

sys.path.insert(0, base_dir)

如何使用自定義的user類

from django.contrib.auth import get_user_model

# 這個方法會從settings中找auth_user_model ,然後取得的user

# 至於為何不直接那models裡的user 暫時不清楚,後續會去測試,知道後再修改本文

user = get_user_model()

然後就可以開始使用了.

django 中User的重寫

django本身的auth user 只包含了基本的資訊包括使用者名稱,密碼,郵箱以及註冊時間和最新的登入時間,但是這些欄位很難滿足我們的要求,有時我們想記錄使用者更多的資訊,例如手機號等資訊,這時就需要在auth user 的基礎上增加字段,django自定義user網上有四種方法。1,是官網上推...

Django拓展User使用者表

新增乙個字段 wechat models.charfield verbose name blank true null true max length 32 def str self return self.username 將model註冊到admin login admin.py from dj...

Django擴充套件內建User類

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