django中的auth模塊與admin后臺管理

1. auth模塊

在創建完django項目之后,執行數據庫遷移之后,數據庫里會增加很多新表,其中有一張名為auth_user的表,當訪問django自帶的路由admin的時候,需要輸入用戶名和密碼,其參照的就是auth_user表

創新互聯公司的客戶來自各行各業,為了共同目標,我們在工作上密切配合,從創業型小企業到企事業單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業領域包括成都網站建設、成都做網站、電商網站開發、微信營銷、系統平臺開發。

使用python3 manage.py crataesupperuser 可以創建超級管理員用戶,同時在auth_user表里面產生一條超級用戶數據

1.1 auth模塊的常用方法

from django.contrib import auth
# 1.比對用戶名和密碼是否正確
	user_obj = auth.authenticate(request,username=username,password=password)
	# 括號內必須同時傳入用戶名和密碼
	print(user_obj)  # 返回的是用戶對象  jason   數據不符合則返回None
	print(user_obj.username)  # jason
	print(user_obj.password)  # 結果為密文
	
# 2.保存用戶狀態
	auth.login(request,user_obj)  # 類似于request.session[key] = user_obj
	# 主要執行了該方法 你就可以在任何地方通過request.user獲取到當前登陸的用戶對象
	
# 3.判斷當前用戶是否登陸
	request.user.is_authenticated()
	登錄了返回true,否則返回false
	
# 4.獲取當前登陸用戶對象
	user_obj=request.user
	
# 5.校驗用戶是否登陸的裝飾器
	from django.contrib.auth.decorators import login_required
	# 局部配置
	@login_required(login_url='/login/')
	在需要裝飾的函數上添加上述裝飾器,括號里表示未登錄則跳轉到指定url
	# 在setting.py里進行全局配置
	LOGIN_URL = '/login/'
		1.如果局部和全局都有 該聽誰的?
		局部 > 全局
		2.局部和全局哪個好呢?
		全局的好處在于無需重復寫代碼 但是跳轉的頁面卻很單一
		局部的好處在于不同的視圖函數在用戶沒有登陸的情況下可以跳轉到不同的頁面
		
# 6.比對原密碼
	is_right=request.user.check_password(old_password)
	返回的是true或者false

# 7.修改密碼
	request.user.set_password(new_password)  # 僅僅是在修改對象的屬性
	request.user.save()  # 這一步才是真正的操作數據庫

# 8.注銷
	auth.logout(request)

# 9.注冊
	# 操作auth_user表寫入數據
	from django.contrib.auth.models import User #導入模塊
	User.objects.create(username=username,password=password)  # 寫入數據  不能用create 密碼沒有加密處理
	# 創建普通用戶
	User.objects.create_user(username=username,password=password)
	# 創建超級用戶(了解):使用代碼創建超級用戶 郵箱是必填的 而用命令創建則可以不填
	User.objects.create_superuser(username=username,email='123@qq.com',password=password)

1.2 如何擴展auth_user表

from django.db import models
from django.contrib.auth.models import User,AbstractUser

# 第一種方法:一對一關系(利用外鍵)  不推薦
# class UserDetail(models.Model):
#     phone = models.BigIntegerField()
#     user = models.OneToOneField(to='User')

# 第二種:面向對象的繼承
class UserInfo(AbstractUser):
    """
    如果繼承了AbstractUser
    那么在執行數據庫遷移命令的時候auth_user表就不會再創建出來了
    而UserInfo表中會出現auth_user所有的字段外加自己擴展的字段
    這么做的好處在于你能夠直接點擊你自己的表更加快速的完成操作及擴展

    前提:
        1.在繼承之前沒有執行過數據庫遷移命令
            auth_user沒有被創建,如果當前庫已經創建了那么你就重新換一個數據庫
        2.繼承的類里面不要覆蓋AbstractUser里面的字段名
            表里面有的字段都不要動,只擴展額外字段即可
        3.需要在配置文件中告訴django你要用UserInfo替代auth_user(******)
            AUTH_USER_MODEL = 'app01.UserInfo'
                                '應用名.表名'
    """
    phone = models.BigIntegerField() # 需要添加的新字段

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

2.admin后臺管理

django的admin管理后臺提供了比較完善的管理數據庫的接口

2.1 admin后臺管理的準備工作

1.創建超級用戶:python manage.py createsuperuser
2.進入127.0.0.1/admin --使用超級用戶賬號登錄進行用戶的增加或者組的增加
3.在app中的admin.py中導入注冊自己要管理的模型類如:from . models import Book
4.admin.site.register(Book) # 注冊語法,注冊之后admin后臺就可以對該表進行管理??!

2.2 為admin后臺設置樣式和增加數據

1.修改admin后臺的表名

在該表對應的models類里面添加一個Meta類:
    class Meta:
        verbose_name_plural = '用戶表' #指定該表在admin后臺的名字為:用戶表


2.在admin中為具體表增加數據

3.null=True,blank=True的區別

phone = models.BigIntegerField(verbose_name='手機號',null=True,blank=True)
    """
    null=True:是告訴數據庫該字段可以為空,admin后臺默認還是不允許為空
    blank=True:告訴admin后臺該字段可以為空
    """

新聞名稱:django中的auth模塊與admin后臺管理
標題路徑:http://m.kartarina.com/article16/dsogsgg.html

成都網站建設公司_創新互聯,為您提供小程序開發定制開發移動網站建設、電子商務、營銷型網站建設商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網頁設計公司
主站蜘蛛池模板: 精品久久久久久中文字幕无码| 免费无码黄十八禁网站在线观看| 在线观看免费无码视频| 无码人妻一区二区三区在线| 日本爆乳j罩杯无码视频| 中文字幕无码日韩欧毛| 亚洲成AV人在线播放无码| 国产av永久精品无码| 亚洲午夜无码久久久久小说| 无码丰满少妇2在线观看| 亚洲中文字幕无码中文| 人妻丰满熟妇aⅴ无码| 超清纯白嫩大学生无码网站| 97精品人妻系列无码人妻| 亚洲VA中文字幕无码毛片| 亚洲真人无码永久在线| 无码国产精品一区二区免费式直播 | 日韩av片无码一区二区不卡电影| 亚洲AV中文无码乱人伦| 最新无码专区视频在线| 亚洲av无码国产精品色午夜字幕| 免费看无码自慰一区二区| 久久久久无码精品亚洲日韩| 日韩无码系列综合区| 亚洲AV无码一区二区大桥未久| 丰满熟妇人妻Av无码区| 精品久久久久久无码国产 | 无码人妻精品一区二区三区在线| 国内精品久久久久久无码不卡| 精品三级AV无码一区| 亚洲VA中文字幕无码毛片| 超清无码无卡中文字幕| 成在线人免费无码高潮喷水| 精品久久久无码中文字幕| 人妻无码aⅴ不卡中文字幕| 国产免费午夜a无码v视频| 人妻av中文字幕无码专区| 免费无码AV片在线观看软件| 亚洲AV成人无码网天堂| 午夜无码性爽快影院6080| 丰满少妇被猛烈进入无码|