1. 程式人生 > 其它 >Django之Auth模組 實現登入,退出,自帶session 與認證功能的一個重要的模組auth模組

Django之Auth模組 實現登入,退出,自帶session 與認證功能的一個重要的模組auth模組

1. 什麼是Auth模組,有什麼用?

django的auth的模組的使用: auth 是集合註冊,登入,登出,session 多個功能集合在一起的模組

2. 使用Auth元件的預設auth_user表常用操作

from django.contrib.auth.models import User
# 1、建立普通使用者
User.objects.create_user(username='Owen', password='123')

# 2、建立超級使用者
User.objects.create_superuser(username='root', password='root', email='[email protected]')

# 3、獲取第一個使用者
user = User.objects.first()

# 4、修改密碼
user.set_password('000')
user.save()

# 5、校驗密碼
res = user.check_password('000')

Auth元件預設auth_user表常用操作

3. auth 元件的常用功能:

例題: 檢驗第一個使用者的密碼
user = User.objects.first()
res = user.check_password('000')
# 檢驗的結果是布林值, True 或者是False

2. django 的檢驗使用者的賬號與密碼是否正確的模組:
from django.contrib.auth import authenticate
user = authenticate(username=usr, password=pwd)
#校驗使用者賬號及密碼,校驗成功返回user物件

3. django 的檢驗使用者成功後的登入模組, 登入之後直接新增session的功能
from django.contrib.auth import login
login(request, user) # 註冊authenticate成功(當前登入)的使用者
#註冊使用者到request物件中,註冊成功可以request.user訪問當前登入使用者(會形成session記錄)

4. django 模組中的登出使用者,使用者登出 使用者可以直接退出了,session會消失
from django.contrib.auth import logout
logout(request)

5. django 模組的檢驗使用者是否登入的方法

# 檢視函式中使用
if request.user.is_authenticated(): pass
# 模板語言中使用
{% if request.user.is_authenticated %}
{% else %}
{% endif %}

4. auth模組之檢驗使用者是否登入,可以做裝飾器用

from django.contrib.auth.decorators import login_required

@login_required(login_url='/user_login/')

def user_home(request):

return render(request, 'user.html', locals())

# 注意他返回的是/user_login/?next=/user_order/ 所以前面拿到的是'next'的key 就可以拿到返回值/user_order/

5. auth模組之給user_auth表新增額外的欄位

6. 當發現auth模組的User表的資訊太少,想自己新增資訊的話:

# 在models.py 內
from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
# 增加自定義欄位
info = models.TextField(null=True)
phone = models.TextField(null=True)


# settings.py配置
AUTH_USER_MODEL = 'app.User'

# 下次在呼叫User表的話 就使用 from app.models import User

6. 通過auth元件實現前端實現使用者登入跳出不同的頁面的功能

7. 如何在前端顯示 這個是誰的主頁資訊
<body>
<h1>{{ request.user.username }}的個人訂單</h1>
</body>
# request.user 是拿到當前登入的物件,
# .username 是拿到當前物件的名字來顯示 誰誰誰的的個人訂單

8. 如何實現使用者登入了就顯示 個人主頁與登出 沒登入就顯示 登入與註冊
# 在前端寫:
<p>
{% if request.user.is_authenticated %} #判斷使用者是否登入成功
<a href="/user_home/">{{ request.user.username }}</a> #如果登入成功顯示 使用者的名字
|
<a href="/user_logout/">登出</a> # 和登出
{% else %}
<a href="/user_login/">登入</a> #如果使用者沒登入, 顯示登入
|
<a href="/user_register/">註冊</a> # 和註冊
{% endif %}
</p>

如何在前端顯示 這個是誰的主頁資訊