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

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

Django組件中Auth模塊是什么

今天就跟大家聊聊有關(guān)Django組件中Auth模塊是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

為修文等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及修文網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、修文網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

一、auth模塊介紹

Auth模塊是Django自帶的用戶認(rèn)證模塊:

我們在開發(fā)一個網(wǎng)站的時候,無可避免的需要設(shè)計實(shí)現(xiàn)網(wǎng)站的用戶系統(tǒng)。此時我們需要實(shí)現(xiàn)包括用戶注冊、用戶登錄、用戶認(rèn)證、注銷、修改密碼等功能,這還真是個麻煩的事情呢。

Django作為一個完美主義者的終極框架,當(dāng)然也會想到用戶的這些痛點(diǎn)。它內(nèi)置了強(qiáng)大的用戶認(rèn)證系統(tǒng)--auth,它默認(rèn)使用 auth_user 表來存儲用戶數(shù)據(jù)。

二、auth模塊常用方法

from django.contrib import auth

## create_superuser()

auth 提供的一個創(chuàng)建新的超級用戶的方法,需要提供必要參數(shù)(username、password)等。

用法:

from django.contrib.auth.models import User
user = User.objects.create_superuser(username='用戶名',password='密碼',email='郵箱',...)

還可以在菜單欄tool中Run manage.py Task下進(jìn)行命令行創(chuàng)建超級用戶:createsuperuser然后根據(jù)提示創(chuàng)建即可

## create_user()

auth 提供的一個創(chuàng)建新用戶的方法,需要提供必要參數(shù)(username、password)等,該方法和創(chuàng)建超級用戶一樣,只不過用戶權(quán)限會有差別

用法:

from django.contrib.auth.models import User
user = User.objects.create_user(username='用戶名',password='密碼',email='郵箱',...)

tip:Run manage.py Task下無法創(chuàng)建普通用戶

## authenticate()

提供了用戶認(rèn)證功能,即驗(yàn)證用戶名以及密碼是否正確,一般需要username 、password兩個關(guān)鍵字參數(shù)。

如果認(rèn)證成功(用戶名和密碼正確有效),便會返回一個 User 對象。

authenticate()會在該 User 對象上設(shè)置一個屬性來標(biāo)識后端已經(jīng)認(rèn)證了該用戶,且該信息在后續(xù)的登錄過程中是需要的。

用法:

user = authenticate(username='usernamer',password='password')  # 用戶名和密碼都要傳才行

## login(HttpRequest, user)

該函數(shù)接受一個HttpResponse對象,以及一個經(jīng)過認(rèn)證的User對象。

該函數(shù)實(shí)現(xiàn)一個用戶登錄的功能,本質(zhì)上會在后端為該用戶生成相關(guān)的session數(shù)據(jù)。

用法:

urls.py
url(r'^login/', views.my_login),
views.py
from django.contrib.auth import authenticate,login
def my_login(request):
    if request.method == 'POST':
        # 獲取前端賬號密碼
        username = request.POST['username']
        password = request.POST['password']
        # 用戶認(rèn)證
        user = authenticate(username=username, password=password)
        # 用戶認(rèn)證成功
        if user:
            # 實(shí)現(xiàn)用戶登錄功能,為該用戶創(chuàng)建生成session數(shù)據(jù)
            login(request, user)  # 這里只要執(zhí)行了login(request, user),在后端任何地方都可以通過request.user
            拿到當(dāng)前登錄的用戶對象
            return render(request, 'index.html')
        # 認(rèn)證不成功,說明用戶名密碼錯誤
        else:
            return HttpResponse('用戶名或密碼錯誤,登錄失敗')
    return render(request, 'login.html')
login.html



    
    登錄



    {% csrf_token %}
    

用戶名:

    

密碼:

    

index.html          主頁面

我是登錄后才能看到的頁面

Django組件中Auth模塊是什么

## logout(request) 

該函數(shù)接受一個HttpRequest對象,無返回值。

當(dāng)調(diào)用該函數(shù)時,當(dāng)前請求的session信息會全部清除。該用戶即使沒有登錄,使用該函數(shù)也不會報錯。

用法:

from django.contrib.auth import logout
def my_logout(request):
    logout(request)
    return redirect('/home/')
def my_home(request):
    return render(request, 'home.html')

Django組件中Auth模塊是什么

## is_authenticated()

用來判斷當(dāng)前請求是否通過了認(rèn)證。返回一個布爾值。

用法:

def my_view(request):
  if not request.user.is_authenticated():
    return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

## login_requierd()

auth 給我們提供的一個裝飾器工具,用來快捷的給某個視圖添加登錄校驗(yàn)。

用法:

from django.contrib.auth.decorators import login_required
      
@login_required
def my_view(request):
  ...

若用戶沒有登錄,則會跳轉(zhuǎn)到django默認(rèn)的 登錄URL '/accounts/login/ ' 并傳遞當(dāng)前訪問url的絕對路徑 (登陸成功后,會重定向到該路徑)。

如果需要自定義登錄的URL,則需要在settings.py文件中通過LOGIN_URL進(jìn)行修改。

示例:

# 局部配置
    # @login_required(login_url='/auth_login/')  
# 全局配置 
    # auth自動跳轉(zhuǎn)
    LOGIN_URL = '/auth_login/'  # settings.py配置

實(shí)例:

# 導(dǎo)入用戶認(rèn)證模塊和login函數(shù)
from django.contrib.auth import authenticate,login
def my_login(request):
    if request.method == 'POST':
        # 獲取前端賬號密碼
        username = request.POST['username']
        password = request.POST['password']
        next_url = request.GET.get('next')  # 獲取到跳轉(zhuǎn)過來的原頁面的url
        # 用戶認(rèn)證
        user = authenticate(username=username, password=password)
        # 用戶認(rèn)證成功
        if user:
            # 實(shí)現(xiàn)用戶登錄功能,為該用戶創(chuàng)建生成session數(shù)據(jù)
            login(request, user)
            return redirect(next_url)  # 登錄成功自動跳轉(zhuǎn)到原來的頁面
        # 認(rèn)證不成功,說明用戶名密碼錯誤
        else:
            return HttpResponse('用戶名或密碼錯誤,登錄失敗')
    return render(request, 'login.html')
from django.contrib.auth.decorators import login_required
# Django登錄驗(yàn)證裝飾器在跳轉(zhuǎn)到登陸頁面時候會自動在頁面末尾拼接一個?next=當(dāng)前url
@login_required
def my_home(request):
    return render(request, 'home.html')

Django組件中Auth模塊是什么

## check_password(password)

auth 提供的一個檢查密碼是否正確的方法,需要提供當(dāng)前請求用戶的密碼。

密碼正確返回True,否則返回False。

用法:

ok = user.check_password('密碼')

## set_password(password)

auth 提供的一個修改密碼的方法,接收要設(shè)置的新密碼作為參數(shù)。

注意:設(shè)置完一定要調(diào)用用戶對象的save方法?。。?/p>

用法:

user.set_password(password='')
user.save(

修改密碼示例:

@login_required
def set_password(request):
    user = request.user
    err_msg = ''
    if request.method == 'POST':
        old_password = request.POST.get('old_password', '')
        new_password = request.POST.get('new_password', '')
        repeat_password = request.POST.get('repeat_password', '')
        # 檢查舊密碼是否正確
        if user.check_password(old_password):
            if not new_password:
                err_msg = '新密碼不能為空'
            elif new_password != repeat_password:
                err_msg = '兩次密碼不一致'
            else:
                user.set_password(new_password)
                user.save()
                return redirect("/login/")
        else:
            err_msg = '原密碼輸入錯誤'
    content = {
        'err_msg': err_msg,
    }
    return render(request, 'set_password.html', content)

## User對象的屬性

User對象屬性:username, password

is_staff : 用戶是否擁有網(wǎng)站的管理權(quán)限.

is_active : 是否允許用戶登錄, 設(shè)置為 False,可以在不刪除用戶的前提下禁止用戶登錄。

看完上述內(nèi)容,你們對Django組件中Auth模塊是什么有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)站名稱:Django組件中Auth模塊是什么
新聞來源:http://weahome.cn/article/jesejs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部