日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在Django中創(chuàng)建自己的自定義用戶模型?

 本文將幫助大家在Django中創(chuàng)建自己的自定義用戶模型

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比日土網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式日土網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋日土地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

自定義用戶模型有什么需求?

創(chuàng)建自己的自定義用戶模型至關(guān)重要。將來,如果要對(duì)模型進(jìn)行一些更改,則可以輕松進(jìn)行這些更改。不然我們可能必須對(duì)模型進(jìn)行一些更改,而且代碼的某些部分也將被更改。在某些網(wǎng)站中,與用戶名相比,使用電子郵件進(jìn)行登錄是有意義的。因此,對(duì)于程序員而言,擁有自定義用戶模型是一個(gè)好習(xí)慣。

本文將幫助大家根據(jù)需要?jiǎng)?chuàng)建自己的自定義用戶模型。請(qǐng)繼續(xù)執(zhí)行以下步驟。

  1.  Django 安裝
  2.  創(chuàng)建Django應(yīng)用
  3.  該應(yīng)用程序的自定義模型
  4.  遷移數(shù)據(jù)庫

1. Django安裝

設(shè)置Django之后,進(jìn)入創(chuàng)建的環(huán)境。然后,我們可以通過以下命令創(chuàng)建Django項(xiàng)目。

 
 
 
  1. django-admin startproject mysite

2.創(chuàng)建Django應(yīng)用

如果發(fā)現(xiàn)某些網(wǎng)站使用了類似/ accounts /的URL,它們看起來就是專業(yè)代碼。因此,我們還需要?jiǎng)?chuàng)建一個(gè)名為accounts的應(yīng)用程序,在其中管理與該帳戶有關(guān)的所有事情。因此,在當(dāng)前環(huán)境中,使用以下命令創(chuàng)建Django應(yīng)用。

 
 
 
  1. python manage.py startapp accounts

創(chuàng)建后,該應(yīng)用將包含基本文件。創(chuàng)建的文件如下所示。

 
 
 
  1. accounts/ 
  2.     __init__.py 
  3.     admin.py 
  4.     apps.py 
  5.     models.py 
  6.     tests.py 
  7.     views.py

一旦創(chuàng)建,所有的數(shù)據(jù)庫模型代碼都應(yīng)該寫在models.py文件中。另外,不要忘記創(chuàng)建一個(gè)urls.py文件,該文件有助于通過帳戶應(yīng)用程序路由鏈接。創(chuàng)建完成后,讓我們進(jìn)入根據(jù)我們的需求構(gòu)建自定義用戶模型的下一步。

3.該應(yīng)用程序的自定義模型

因此,為了創(chuàng)建自定義用戶模型,我們需要在models.py文件中寫下以下代碼,因?yàn)閜ython使用對(duì)象來管理和訪問存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)。下面提到了models.py文件的代碼。

 
 
 
  1. from django.db import models 
  2. from django.contrib.auth.models import AbstractBaseUser , BaseUserManager 
  3. import uuid 
  4. class UserManager(BaseUserManager): 
  5.     def create_user(self, email, firstname, lastname, phone,password=None): 
  6.         user = self.model( 
  7.             email = self.normalize_email(email), 
  8.             firstnamefirstname = firstname, 
  9.             lastnamelastname = lastname, 
  10.             phonephone = phone, 
  11.         ) 
  12.         user.set_password(password) 
  13.         user.save(using = self._db) 
  14.         return user  
  15.     def create_superuser(self, email,firstname,lastname,phone,password=None): 
  16.         user = self.create_user( 
  17.             emailemail=email, 
  18.             passwordpassword=password, 
  19.             firstnamefirstname = firstname, 
  20.             lastnamelastname = lastname, 
  21.             phonephone = phone, 
  22.         ) 
  23.         user.is_admin = True 
  24.         user.is_staff = True 
  25.         user.save(using=self._db) 
  26.         return user  
  27. class User(AbstractBaseUser): 
  28.     id = models.CharField(max_length=200, default=uuid.uuid4,unique=True,primary_key=True) 
  29.     email = models.EmailField(null=False, max_length=100,unique=True) 
  30.     firstname = models.CharField(null=False, max_length=100) 
  31.     lastname = models.CharField(null=False, max_length=100) 
  32.     phone = models.IntegerField(null=False,unique=True) 
  33.     date_joined = models.DateTimeField(auto_now=True) 
  34.     last_login = models.DateTimeField(auto_now=True)
  35.     is_admin = models.BooleanField(default = False) 
  36.     is_active = models.BooleanField(default = True) 
  37.     is_staff = models.BooleanField(default = False) 
  38.     is_superuser = models.BooleanField(default = False) 
  39.     USERNAME_FIELD = 'email' 
  40.     REQUIRED_FIELDS = ['firstname','lastname','phone'] 
  41.     objects = UserManager() 
  42.     def __str__(self): 
  43.         return self.email + ", " + self.firstname   
  44.     def has_perm(self, perm, obj = None): 
  45.         return self.is_admin 
  46.     def has_module_perms(self, app_label): 
  47.         return True

用戶類包含表的字段或結(jié)構(gòu),我們?cè)谄渲蝎@取有關(guān)用戶的一些詳細(xì)信息以及其中的某些條件。為了管理User類,我們有UserManager,它將用于創(chuàng)建新用戶或超級(jí)用戶。就像我之前說的,這里的用戶名字段將被替換為電子郵件。它比用戶名字段更有意義。還提到了必填字段。通過使用電子郵件作為用戶名字段,它會(huì)自動(dòng)將電子郵件字段添加為必不可少的字段。

因此,通過UserManager,我們可以創(chuàng)建一個(gè)新的普通用戶和一個(gè)超級(jí)用戶。user.set_password()會(huì)將純文本密碼哈希為默認(rèn)的哈希算法。Django將PBKDF2與SHA-256哈希一起使用,并具有密碼擴(kuò)展機(jī)制。user.save()函數(shù)將使用字段和哈希密碼保存創(chuàng)建的用戶。創(chuàng)建自定義用戶模型很簡單。

在這里需要注意,在創(chuàng)建模型之前不要遷移模型。在此之前,創(chuàng)建模型后,我們必須使用自定義模型更新Django設(shè)置文件,否則Django將使用其自己的預(yù)先實(shí)現(xiàn)的模型。只需在項(xiàng)目目錄中的settings.py文件中使用此代碼即可。

 
 
 
  1. AUTH_USER_MODEL = ‘a(chǎn)ccounts.User’

設(shè)置好模型后,就該將模型遷移到數(shù)據(jù)庫了。

4.遷移模型

現(xiàn)在,我們準(zhǔn)備通過將更改遷移到數(shù)據(jù)庫中來遷移自定義用戶模型。使用以下命令在當(dāng)前環(huán)境中遷移并執(zhí)行該代碼。

 
 
 
  1. python manage.py makemigrations 
  2. python manage.py migrate

此命令將查找Django項(xiàng)目中的所有模型和模型中的更改。如果要專門為應(yīng)用程序進(jìn)行遷移,可以使用以下命令進(jìn)行。

 
 
 
  1. python manage.py makemigrations  
  2. python manage.py migrate 

可以將替換為帳戶,以僅在該應(yīng)用程序上進(jìn)行更改。


當(dāng)前名稱:如何在Django中創(chuàng)建自己的自定義用戶模型?
分享鏈接:http://www.5511xx.com/article/dpcpdpc.html