最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中的用戶身份驗(yàn)證示例詳解

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

前言

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

在這次作業(yè)中,因?yàn)樾枰粋€(gè)后臺(tái)管理員來(lái)管理各種活動(dòng)的創(chuàng)建和發(fā)布,因此也需要有用戶的身份認(rèn)證操作。這次的后端是Django,試了一下發(fā)現(xiàn)Django實(shí)現(xiàn)了一套自己的身份驗(yàn)證的API,用起來(lái)非常方便。

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

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

普通User的創(chuàng)建是調(diào)用User中的create_user進(jìn)行創(chuàng)建,而superuser的創(chuàng)建不是在代碼中,而是輸入python manage.py createsuperuser進(jìn)行創(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()

用戶登陸登出

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

用戶權(quán)限

request.user.is_authenticated()

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

當(dāng)然還有一種更簡(jiǎn)單的用法——函數(shù)的裝飾器,因?yàn)槲覀冇玫氖穷愖鱿鄳?yīng),因此不適合微信搶票程序,但是還是mark一下,因?yàn)榇_實(shí)太方便了。就是在函數(shù)的前面加上login_required()裝飾器,括號(hào)中可以填入如果未登陸應(yīng)該重定向到哪個(gè)頁(yè)面。

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

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

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

除此之外,還有一個(gè)值得提的地方:裝飾器user_passes_test(xxtest),可以自己編寫一個(gè)test函數(shù)來(lái)測(cè)試用戶是否可以訪問(wèn),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é)

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

相關(guān)文章

  • Python腳本處理空格的方法

    Python腳本處理空格的方法

    這篇文章主要介紹了Python腳本處理空格的方法,解決方案非常簡(jiǎn)單,但是好多朋友都不知道,下面小編把解決方案分享到腳本之家平臺(tái),供大家參考
    2016-08-08
  • Python代碼實(shí)現(xiàn)一個(gè)AI多站點(diǎn)搜索神器

    Python代碼實(shí)現(xiàn)一個(gè)AI多站點(diǎn)搜索神器

    在人工智能快速發(fā)展的今天,我們經(jīng)常需要在多個(gè)AI平臺(tái)上嘗試同一個(gè)提示詞,每次復(fù)制粘貼真的很麻煩,所以本文就來(lái)使用Python打造一個(gè)AI多站點(diǎn)搜索神器吧
    2025-03-03
  • pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)例

    pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)例

    今天小編就為大家分享一篇pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python多線程編程(二):?jiǎn)?dòng)線程的兩種方法

    Python多線程編程(二):?jiǎn)?dòng)線程的兩種方法

    這篇文章主要介紹了Python多線程編程(一):?jiǎn)?dòng)線程的兩種方法,本文講解了將函數(shù)傳遞進(jìn)Thread對(duì)象、繼承自threading.Thread類兩種方法,需要的朋友可以參考下
    2015-04-04
  • python 執(zhí)行shell命令并將結(jié)果保存的實(shí)例

    python 執(zhí)行shell命令并將結(jié)果保存的實(shí)例

    今天小編就為大家分享一篇python 執(zhí)行shell命令并將結(jié)果保存的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python比較配置文件的方法實(shí)例詳解

    Python比較配置文件的方法實(shí)例詳解

    工作中最常見(jiàn)的配置文件有四種:普通key=value的配置文件、Json格式的配置文件、HTML格式的配置文件以及YMAML配置文件。這篇文章主要介紹了Python比較配置文件的方法 ,需要的朋友可以參考下
    2019-06-06
  • Pandas之ReIndex重新索引的實(shí)現(xiàn)

    Pandas之ReIndex重新索引的實(shí)現(xiàn)

    這篇文章主要介紹了Pandas之ReIndex重新索引的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python在不同目錄下導(dǎo)入模塊的實(shí)現(xiàn)方法

    Python在不同目錄下導(dǎo)入模塊的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇Python在不同目錄下導(dǎo)入模塊的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • TENSORFLOW變量作用域(VARIABLE SCOPE)

    TENSORFLOW變量作用域(VARIABLE SCOPE)

    這篇文章主要介紹了TENSORFLOW變量作用域(VARIABLE SCOPE),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 詳談Python中列表list,元祖tuple和numpy中的array區(qū)別

    詳談Python中列表list,元祖tuple和numpy中的array區(qū)別

    下面小編就為大家分享一篇詳談Python中列表list,元祖tuple和numpy中的array區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論

绍兴县| 旌德县| 邹平县| 巩留县| 准格尔旗| 五常市| 南雄市| 永德县| 昌江| 河东区| 辽阳市| 阜新市| 台安县| 塘沽区| 洛扎县| 阿坝县| 方城县| 崇义县| 临泉县| 顺昌县| 石楼县| 乌什县| 鹤山市| 衡水市| 沙坪坝区| 都安| 凯里市| 遂平县| 涞源县| 南澳县| 彩票| 永顺县| 万全县| 岳阳县| 乾安县| 彝良县| 富裕县| 清远市| 五家渠市| 义乌市| 富宁县|