亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Django中的用戶身份驗證示例詳解

 更新時間:2019年08月07日 10:23:09   作者:THSSwzw  
這篇文章主要給大家介紹了關(guān)于Django中用戶身份驗證的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用SQL Django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

這次開發(fā)微信搶票程序中,普通用戶的身份是由微信管理的。當用戶通過微信公眾號(測試號)向后臺發(fā)消息時,微信會將用戶的身份標記為一個unique_id來識別,后端可以由此來判斷用戶身份。這種認證比較特殊,它不存在登陸、登出的操作。如果是一個普通的web應(yīng)用,應(yīng)該有用戶的登陸、登出操作,當用戶未經(jīng)授權(quán)訪問某個URL的時候,后端應(yīng)該拒絕這次請求,或者是重定向到登陸界面。

在這次作業(yè)中,因為需要一個后臺管理員來管理各種活動的創(chuàng)建和發(fā)布,因此也需要有用戶的身份認證操作。這次的后端是Django,試了一下發(fā)現(xiàn)Django實現(xiàn)了一套自己的身份驗證的API,用起來非常方便。

用戶創(chuàng)建與修改

眾所周知,Django中存儲數(shù)據(jù)的原型稱為Model,User就是Django中用戶的Model,不需要程序員在models.py中自己定義。它有username、password、email、first_name、last_name五個屬性。在Django中還有一個稱為superuser的用戶,它其實是User的一個特殊的子類,在本次微信搶票中,后臺管理員就是superuser。

普通User的創(chuàng)建是調(diào)用User中的create_user進行創(chuàng)建,而superuser的創(chuàng)建不是在代碼中,而是輸入python manage.py createsuperuser進行創(chuàng)建。

#普通用戶的創(chuàng)建
from django.contrib.auth.models import User
user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
user.last_name = 'Lennon'
user.save()

用戶登陸登出

在登陸時,使用authenticate的函數(shù)對用戶進行驗證,如果用戶名、密碼錯誤,該函數(shù)的返回值為None。此時嗲用login函數(shù)將request與該user綁定起來。login的結(jié)果是,以后每次的request,在request.user中總會存在用戶的信息,這是下一步我們進行權(quán)限認證的前提。用戶的退出就是調(diào)用logout(request)函數(shù)即可。

用戶權(quán)限

request.user.is_authenticated()

一般的情況下(比如在本次微信搶票中),只需要有兩種訪問可能。一個是用戶已登陸,可以訪問,一個是用戶未登陸,禁止訪問。因此我們用這個函數(shù)就足夠了。(我們確實是這么用的2333)

當然還有一種更簡單的用法——函數(shù)的裝飾器,因為我們用的是類做相應(yīng),因此不適合微信搶票程序,但是還是mark一下,因為確實太方便了。就是在函數(shù)的前面加上login_required()裝飾器,括號中可以填入如果未登陸應(yīng)該重定向到哪個頁面。

但是在其它web應(yīng)用中,我們需要不同的用戶組有不同的權(quán)限,這個時候Django提供了另外一個叫做permission的屬性。

首先,每個用戶都有一個group外鍵,可以給用戶分配在某些group中,然后可以通過group.permissions來修改group的permission列表。

在使用permission的時候,同樣可以使用裝飾器require_permission。

除此之外,還有一個值得提的地方:裝飾器user_passes_test(xxtest),可以自己編寫一個test函數(shù)來測試用戶是否可以訪問,test函數(shù)接收的參數(shù)為request.user

from django.contrib.auth.decorators import user_passes_test
​
def email_check(user):
  return user.email.endswith('@example.com')
​
@user_passes_test(email_check)
def my_view(request):
  ...

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python OS模塊實例詳解

    Python OS模塊實例詳解

    這篇文章主要介紹了Python OS模塊,結(jié)合實例形式總結(jié)分析了Python使用OS解析文件路徑、判斷文件、目錄等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Python AI編程助手AICodeHelper使用示例

    Python AI編程助手AICodeHelper使用示例

    這篇文章主要介紹了Python AI編程助手AICodeHelper使用示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • Python3.8如何解決No module named 'numpy'報錯問題

    Python3.8如何解決No module named 'numpy&apos

    這篇文章主要介紹了Python3.8如何解決No module named 'numpy'報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python中for循環(huán)變量作用域及用法詳解

    python中for循環(huán)變量作用域及用法詳解

    這篇文章主要介紹了python中for循環(huán)變量作用域及用法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • 詳解如何使用Plotly和Dash進行數(shù)據(jù)可視化

    詳解如何使用Plotly和Dash進行數(shù)據(jù)可視化

    數(shù)據(jù)可視化是數(shù)據(jù)分析中至關(guān)重要的一環(huán),它能夠幫助我們更直觀地理解數(shù)據(jù)并發(fā)現(xiàn)隱藏的模式和趨勢,本文將介紹如何使用Plotly和Dash進行數(shù)據(jù)可視化,感興趣的可以了解下
    2024-04-04
  • Python中的迭代器你了解嗎

    Python中的迭代器你了解嗎

    迭代器是一種特殊的對象,它實現(xiàn)了迭代協(xié)議,允許按照一定的順序逐個訪問元素,本文就來帶大家深入了解一下Python中迭代器的使用,需要的可以參考下
    2023-05-05
  • python集成開發(fā)環(huán)境配置(pycharm)

    python集成開發(fā)環(huán)境配置(pycharm)

    本文是python快速進階系列文章的第一篇,給大家介紹的是python集成開發(fā)環(huán)境pycharm的配置,有需要的小伙伴可以參考下
    2020-02-02
  • python實現(xiàn)移位加密和解密

    python實現(xiàn)移位加密和解密

    這篇文章主要為大家詳細介紹了python實現(xiàn)移位加密和解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 淺談Python 列表字典賦值的陷阱

    淺談Python 列表字典賦值的陷阱

    今天小編就為大家分享一篇淺談Python 列表字典賦值的陷阱,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python實現(xiàn)畫圓功能

    python實現(xiàn)畫圓功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)畫圓功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論