真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

django中的auth模塊與admin后臺(tái)管理

1. auth模塊

在創(chuàng)建完django項(xiàng)目之后,執(zhí)行數(shù)據(jù)庫(kù)遷移之后,數(shù)據(jù)庫(kù)里會(huì)增加很多新表,其中有一張名為auth_user的表,當(dāng)訪問(wèn)django自帶的路由admin的時(shí)候,需要輸入用戶名和密碼,其參照的就是auth_user表

創(chuàng)新互聯(lián)公司的客戶來(lái)自各行各業(yè),為了共同目標(biāo),我們?cè)诠ぷ魃厦芮信浜希瑥膭?chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對(duì)我們的要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、成都做網(wǎng)站、電商網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開(kāi)發(fā)。

使用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í)行了該方法 你就可以在任何地方通過(guò)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.如果局部和全局都有 該聽(tīng)誰(shuí)的?
		局部 > 全局
		2.局部和全局哪個(gè)好呢?
		全局的好處在于無(wú)需重復(fù)寫(xiě)代碼 但是跳轉(zhuǎn)的頁(yè)面卻很單一
		局部的好處在于不同的視圖函數(shù)在用戶沒(méi)有登陸的情況下可以跳轉(zhuǎn)到不同的頁(yè)面
		
# 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ù)庫(kù)

# 8.注銷
	auth.logout(request)

# 9.注冊(cè)
	# 操作auth_user表寫(xiě)入數(shù)據(jù)
	from django.contrib.auth.models import User #導(dǎo)入模塊
	User.objects.create(username=username,password=password)  # 寫(xiě)入數(shù)據(jù)  不能用create 密碼沒(méi)有加密處理
	# 創(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ù)庫(kù)遷移命令的時(shí)候auth_user表就不會(huì)再創(chuàng)建出來(lái)了
    而UserInfo表中會(huì)出現(xiàn)auth_user所有的字段外加自己擴(kuò)展的字段
    這么做的好處在于你能夠直接點(diǎn)擊你自己的表更加快速的完成操作及擴(kuò)展

    前提:
        1.在繼承之前沒(méi)有執(zhí)行過(guò)數(shù)據(jù)庫(kù)遷移命令
            auth_user沒(méi)有被創(chuàng)建,如果當(dāng)前庫(kù)已經(jīng)創(chuàng)建了那么你就重新?lián)Q一個(gè)數(shù)據(jù)庫(kù)
        2.繼承的類里面不要覆蓋AbstractUser里面的字段名
            表里面有的字段都不要?jiǎng)?,只擴(kuò)展額外字段即可
        3.需要在配置文件中告訴django你要用UserInfo替代auth_user(******)
            AUTH_USER_MODEL = 'app01.UserInfo'
                                '應(yīng)用名.表名'
    """
    phone = models.BigIntegerField() # 需要添加的新字段

你如果自己寫(xiě)表替代了auth_user,那么auth模塊的功能還是照常使用,參考的表頁(yè)由原來(lái)的auth_user變成了UserInfo!

2.admin后臺(tái)管理

django的admin管理后臺(tái)提供了比較完善的管理數(shù)據(jù)庫(kù)的接口

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è)語(yǔ)法,注冊(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ù)庫(kù)該字段可以為空,admin后臺(tái)默認(rèn)還是不允許為空
    blank=True:告訴admin后臺(tái)該字段可以為空
    """

分享名稱:django中的auth模塊與admin后臺(tái)管理
文章位置:http://weahome.cn/article/dsogsgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部