django中的auth模塊與admin后臺(tái)管理方法
1. auth模塊
auth模塊是對(duì)登錄認(rèn)證方法的一種封裝,本身就是一個(gè)對(duì)象,可以獲取用戶的詳細(xì)信息,有了auth模塊可以驗(yàn)證登錄信息是否存在數(shù)據(jù)庫中,還可以檢驗(yàn)用戶是否已經(jīng)登錄,校驗(yàn)密碼等。
在創(chuàng)建完django項(xiàng)目之后,執(zhí)行數(shù)據(jù)庫遷移之后,數(shù)據(jù)庫里會(huì)增加很多新表,其中有一張名為auth_user的表,當(dāng)訪問django自帶的路由admin的時(shí)候,需要輸入用戶名和密碼,其參照的就是auth_user表
使用python3 manage.py crataesupperuser 可以創(chuàng)建超級(jí)管理員用戶,同時(shí)在auth_user表里面產(chǎn)生一條超級(jí)用戶數(shù)據(jù)
1.1 auth模塊的常用方法
from django.contrib import auth # 1.比對(duì)用戶名和密碼是否正確 user_obj = auth.authenticate(request,username=username,password=password) # 括號(hào)內(nèi)必須同時(shí)傳入用戶名和密碼 print(user_obj) # 返回的是用戶對(duì)象 jason 數(shù)據(jù)不符合則返回None print(user_obj.username) # jason print(user_obj.password) # 結(jié)果為密文 # 2.保存用戶狀態(tài) auth.login(request,user_obj) # 類似于request.session[key] = user_obj # 主要執(zhí)行了該方法 你就可以在任何地方通過request.user獲取到當(dāng)前登陸的用戶對(duì)象 # 3.判斷當(dāng)前用戶是否登陸 request.user.is_authenticated() 登錄了返回true,否則返回false # 4.獲取當(dāng)前登陸用戶對(duì)象 user_obj=request.user # 5.校驗(yàn)用戶是否登陸的裝飾器 from django.contrib.auth.decorators import login_required # 局部配置 @login_required(login_url='/login/') 在需要裝飾的函數(shù)上添加上述裝飾器,括號(hào)里表示未登錄則跳轉(zhuǎn)到指定url # 在setting.py里進(jìn)行全局配置 LOGIN_URL = '/login/' 1.如果局部和全局都有 該聽誰的? 局部 > 全局 2.局部和全局哪個(gè)好呢? 全局的好處在于無需重復(fù)寫代碼 但是跳轉(zhuǎn)的頁面卻很單一 局部的好處在于不同的視圖函數(shù)在用戶沒有登陸的情況下可以跳轉(zhuǎn)到不同的頁面 # 6.比對(duì)原密碼 is_right=request.user.check_password(old_password) 返回的是true或者false # 7.修改密碼 request.user.set_password(new_password) # 僅僅是在修改對(duì)象的屬性 request.user.save() # 這一步才是真正的操作數(shù)據(jù)庫 # 8.注銷 auth.logout(request) # 9.注冊(cè) # 操作auth_user表寫入數(shù)據(jù) from django.contrib.auth.models import User #導(dǎo)入模塊 User.objects.create(username=username,password=password) # 寫入數(shù)據(jù) 不能用create 密碼沒有加密處理 # 創(chuàng)建普通用戶 User.objects.create_user(username=username,password=password) # 創(chuàng)建超級(jí)用戶(了解):使用代碼創(chuàng)建超級(jí)用戶 郵箱是必填的 而用命令創(chuàng)建則可以不填 User.objects.create_superuser(username=username,email='123@qq.com',password=password)
1.2 如何擴(kuò)展auth_user表
from django.db import models from django.contrib.auth.models import User,AbstractUser # 第一種方法:一對(duì)一關(guān)系(利用外鍵) 不推薦 # class UserDetail(models.Model): # phone = models.BigIntegerField() # user = models.OneToOneField(to='User') # 第二種:面向?qū)ο蟮睦^承 class UserInfo(AbstractUser): """ 如果繼承了AbstractUser 那么在執(zhí)行數(shù)據(jù)庫遷移命令的時(shí)候auth_user表就不會(huì)再創(chuàng)建出來了 而UserInfo表中會(huì)出現(xiàn)auth_user所有的字段外加自己擴(kuò)展的字段 這么做的好處在于你能夠直接點(diǎn)擊你自己的表更加快速的完成操作及擴(kuò)展 前提: 1.在繼承之前沒有執(zhí)行過數(shù)據(jù)庫遷移命令 auth_user沒有被創(chuàng)建,如果當(dāng)前庫已經(jīng)創(chuàng)建了那么你就重新?lián)Q一個(gè)數(shù)據(jù)庫 2.繼承的類里面不要覆蓋AbstractUser里面的字段名 表里面有的字段都不要?jiǎng)樱粩U(kuò)展額外字段即可 3.需要在配置文件中告訴django你要用UserInfo替代auth_user(******) AUTH_USER_MODEL = 'app01.UserInfo' '應(yīng)用名.表名' """ phone = models.BigIntegerField() # 需要添加的新字段 你如果自己寫表替代了auth_user,那么auth模塊的功能還是照常使用,參考的表頁由原來的auth_user變成了UserInfo!
2.admin后臺(tái)管理
django的admin管理后臺(tái)提供了比較完善的管理數(shù)據(jù)庫的接口
2.1 admin后臺(tái)管理的準(zhǔn)備工作
1.創(chuàng)建超級(jí)用戶:python manage.py createsuperuser 2.進(jìn)入127.0.0.1/admin --使用超級(jí)用戶賬號(hào)登錄進(jìn)行用戶的增加或者組的增加 3.在app中的admin.py中導(dǎo)入注冊(cè)自己要管理的模型類如:from . models import Book 4.admin.site.register(Book) # 注冊(cè)語法,注冊(cè)之后admin后臺(tái)就可以對(duì)該表進(jìn)行管理??!
2.2 為admin后臺(tái)設(shè)置樣式和增加數(shù)據(jù)
1.修改admin后臺(tái)的表名
在該表對(duì)應(yīng)的models類里面添加一個(gè)Meta類: class Meta: verbose_name_plural = '用戶表' #指定該表在admin后臺(tái)的名字為:用戶表
2.在admin中為具體表增加數(shù)據(jù)
3.null=True,blank=True的區(qū)別
phone = models.BigIntegerField(verbose_name='手機(jī)號(hào)',null=True,blank=True) """ null=True:是告訴數(shù)據(jù)庫該字段可以為空,admin后臺(tái)默認(rèn)還是不允許為空 blank=True:告訴admin后臺(tái)該字段可以為空 """
到此這篇關(guān)于django中的auth模塊與admin后臺(tái)管理的文章就介紹到這了,更多相關(guān)django admin后臺(tái)管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python獲取昨天、今天、明天開始、結(jié)束時(shí)間戳的方法
今天小編就為大家分享一篇Python獲取昨天、今天、明天開始、結(jié)束時(shí)間戳的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06DRF之請(qǐng)求與響應(yīng)的實(shí)現(xiàn)
本文主要介紹了DRF請(qǐng)求與響應(yīng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07Pyqt+matplotlib 實(shí)現(xiàn)實(shí)時(shí)畫圖案例
這篇文章主要介紹了Pyqt+matplotlib 實(shí)現(xiàn)實(shí)時(shí)畫圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python灰度變換中伽馬變換分析實(shí)現(xiàn)
灰度變換是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐點(diǎn)改變?cè)磮D像中每個(gè)像素灰度值的方法。目的是改善畫質(zhì),使圖像顯示效果更加清晰。圖像的灰度變換處理是圖像增強(qiáng)處理技術(shù)中的一種非?;A(chǔ)、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個(gè)重要組成部分2022-10-10Python 日期的轉(zhuǎn)換及計(jì)算的具體使用詳解
這篇文章主要介紹了Python 日期的轉(zhuǎn)換及計(jì)算的具體使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01win10安裝tensorflow-gpu1.8.0詳細(xì)完整步驟
這篇文章主要介紹了win10安裝tensorflow-gpu1.8.0詳細(xì)完整步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01python構(gòu)建深度神經(jīng)網(wǎng)絡(luò)(續(xù))
這篇文章主要詳細(xì)介紹了python構(gòu)建深度神經(jīng)網(wǎng)絡(luò)DNN,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03為什么str(float)在Python 3中比Python 2返回更多的數(shù)字
很多朋友質(zhì)疑為什么str(float)在Python 3中比Python 2返回更多的數(shù)字,在Python 2.7中,一個(gè)float的repr返回最接近十七位數(shù)的十進(jìn)制數(shù);這足以精確地識(shí)別每個(gè)可能的IEEE浮點(diǎn)值。對(duì)此問題很多朋友都很疑問,下面小編給大家簡單介紹下,需要的朋友可以參考下2018-10-10