1. 程式人生 > 遊戲資訊 >周遊:遊戲裡你們在嗑什麼cp?

周遊:遊戲裡你們在嗑什麼cp?

"""
其實我們在建立好一個django專案之後直接執行資料庫遷移命令會自動生成很多表
	django_session
	auth_user
django在啟動之後就可以直接訪問admin路由,需要輸入使用者名稱和密碼,資料參考的就是auth_user表,並且還必須是管理員使用者才能進入

建立超級使用者(管理員)
	python3 manage.py createsuperuser
	
依賴於auth_user表完成使用者相關的所有功能
"""

  

# 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()

# 4.獲取當前登陸使用者
request.user

# 5.校驗使用者是否登陸裝飾器
from django.contrib.auth.decorators import login_required
# 區域性配置
@login_required(login_url='/login/') 
# 全域性配置
LOGIN_URL = '/login/'
	1.如果區域性和全域性都有 該聽誰的?
    區域性 > 全域性
	2.區域性和全域性哪個好呢?
    全域性的好處在於無需重複寫程式碼 但是跳轉的頁面卻很單一
    區域性的好處在於不同的檢視函式在使用者沒有登陸的情況下可以跳轉到不同的頁面

# 6.比對原密碼
request.user.check_password(old_password)

# 7.修改密碼
request.user.set_password(new_password)  # 僅僅是在修改物件的屬性
request.user.save()  # 這一步才是真正的操作資料庫

# 8.登出
auth.logout(request) 

# 9.註冊
# 操作auth_user表寫入資料
User.objects.create(username=username,password=password)  # 寫入資料  不能用create 密碼沒有加密處理
# 建立普通使用者
User.objects.create_user(username=username,password=password)
# 建立超級使用者(瞭解):使用程式碼建立超級使用者 郵箱是必填的 而用命令建立則可以不填
User.objects.create_superuser(username=username,email='[email protected]',password=password)
```