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

基于Django用戶認(rèn)證系統(tǒng)詳解

 更新時(shí)間:2018年02月21日 20:10:11   作者:Blog的猿序程個(gè)一  
下面小編就為大家分享一篇基于Django用戶認(rèn)證系統(tǒng)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

一. 認(rèn)證系統(tǒng)概要

create_user 創(chuàng)建用戶

authenticate 驗(yàn)證登錄

login 記住用戶的登錄狀態(tài)

logout 退出登錄

is_authenticated 判斷用戶是否登錄

login_required 判斷用戶是否登錄的裝飾器

二. 創(chuàng)建用戶和驗(yàn)證登錄

當(dāng)用戶注冊(cè)的時(shí)候用create_user(username,password,email)默認(rèn)情況下is_active=True,is_staff=False,is_superuser=False。

底層將password用hash算法加密之后存儲(chǔ)到數(shù)據(jù)庫(kù)中。

當(dāng)用戶登錄的時(shí)候用authenticate(username=username,password=password)驗(yàn)證登錄,判斷數(shù)據(jù)庫(kù)中是否存在用戶輸入的賬號(hào)和密碼,返回一個(gè)user對(duì)象。

底層將password用hash算法加密后和數(shù)據(jù)庫(kù)中password進(jìn)行對(duì)比。

三. 記住用戶的登錄狀態(tài)

當(dāng)用戶登錄的時(shí)候用login(request,user)來(lái)記住用戶的登錄狀態(tài),默認(rèn)將用戶的id存儲(chǔ)在session中。

login有兩個(gè)參數(shù)一個(gè)是request,一個(gè)是user,user的來(lái)源必須是authenticate返回的。也就是說(shuō)用login之前必須先調(diào)用authenticate。

四. 退出登錄

當(dāng)用戶注銷的時(shí)候用logout(request),只需要一個(gè)參數(shù)request。

五. 判斷用戶是否登錄

在后臺(tái)的視圖函數(shù)里可以用request.user.is_authenticated()判斷用戶是否登錄

在前端頁(yè)面中可以用{% if user.is_authenticated %}{% endif %}判斷用戶是否登錄

六. 裝飾器判斷用戶是否登錄

基于普通的視圖函數(shù)可以使用@login_required來(lái)裝飾,但是基于類視圖的get和post方法不能直接使用@login_required來(lái)裝飾。

基于類視圖的裝飾有以下三種:

第一種:在urls文件中導(dǎo)入login_requtred,直接裝飾as_view()函數(shù)

url(r'^$', login_required(UserInfoView.as_view()), name='user') 

第二種:自定義一個(gè)LoginRequiredView類繼承View類,重寫(xiě)as_view()函數(shù),并裝飾as_view()函數(shù)的返回值。 我們自定義的視圖類就不需要再繼承View類,直接繼承LoginRequiredView類就好了。

class LoginRequiredView(View):
  @classmethod
  def as_view(cls, **initkwargs):
    # 調(diào)用View類中as_view方法
    view = super(LoginRequiredView, cls).as_view(**initkwargs)
    # 調(diào)用login_required裝飾器
    return login_required(view)

第三種:自定義一個(gè)LoginRequiredMixin類,重寫(xiě)as_view()函數(shù),調(diào)用View中的as_view()函數(shù),并裝飾as_view()函數(shù)的返回值。 我們自定義的視圖類需要先繼承LoginRequiredMixin類再繼承View類。這種方式的關(guān)鍵點(diǎn)在于:多繼承中super()的調(diào)用順序和__mro__的順序是一樣的。

class LoginRequiredMixin(object):
  @classmethod
  def as_view(cls, **initkwargs):
    # 調(diào)用View類中as_view方法
    view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
    # 調(diào)用login_required裝飾器
    return login_required(view)

以上這篇基于Django用戶認(rèn)證系統(tǒng)詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)圖片和視頻的相互轉(zhuǎn)換

    Python實(shí)現(xiàn)圖片和視頻的相互轉(zhuǎn)換

    有時(shí)候我們需要把很多的圖片合成視頻,或者說(shuō)自己寫(xiě)一個(gè)腳本去加快或者放慢視頻;也有時(shí)候需要把視頻裁剪成圖片,進(jìn)行后續(xù)操作。這篇文章就將為大家介紹如何通過(guò)Python實(shí)現(xiàn)圖片和視頻的相互轉(zhuǎn)換,需要的可以參考一下
    2021-12-12
  • Python PyQt5-圖形界面的美化操作

    Python PyQt5-圖形界面的美化操作

    這篇文章主要介紹了Python PyQt5-圖形界面的美化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 如何將Python腳本打包成exe應(yīng)用程序介紹

    如何將Python腳本打包成exe應(yīng)用程序介紹

    大家好,本篇文章主要講的是如何將Python腳本打包成exe應(yīng)用程序介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 詳解python運(yùn)行三種方式

    詳解python運(yùn)行三種方式

    這篇文章主要介紹了python運(yùn)行三種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python中l(wèi)ist的交、并、差集獲取方法示例

    Python中l(wèi)ist的交、并、差集獲取方法示例

    這篇文章主要介紹了Python中l(wèi)ist的交、并、差集獲取方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 徹底解決No?module?named?‘torch_geometric‘報(bào)錯(cuò)的辦法

    徹底解決No?module?named?‘torch_geometric‘報(bào)錯(cuò)的辦法

    這篇文章主要給大家介紹了關(guān)于如何徹底解決No?module?named?‘torch_geometric‘報(bào)錯(cuò)的辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn)

    python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn)

    本文主要介紹了python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 編寫(xiě)Python腳本使得web頁(yè)面上的代碼高亮顯示

    編寫(xiě)Python腳本使得web頁(yè)面上的代碼高亮顯示

    這篇文章主要介紹了編寫(xiě)Python腳本使得web頁(yè)面上的代碼高亮顯示,主要使用了pygments工具,需要的朋友可以參考下
    2015-04-04
  • Python中窗口操作的完整教程

    Python中窗口操作的完整教程

    在使用 Python 進(jìn)行窗口操作時(shí),可以執(zhí)行各種任務(wù),如最大化、最小化、置頂窗口,本文將詳細(xì)介紹這些操作,并提供豐富的示例代碼,希望可以更好地幫助大家了解如何利用 Python 操縱窗口
    2023-11-11
  • 聽(tīng)歌識(shí)曲--用python實(shí)現(xiàn)一個(gè)音樂(lè)檢索器的功能

    聽(tīng)歌識(shí)曲--用python實(shí)現(xiàn)一個(gè)音樂(lè)檢索器的功能

    本篇文章中主要介紹了用python實(shí)現(xiàn)一個(gè)音樂(lè)檢索器,類似于QQ音樂(lè)的搖一搖識(shí)曲,有興趣的同學(xué)可以了解一下。
    2016-11-11

最新評(píng)論

广平县| 高阳县| 彭州市| 长寿区| 武定县| 固镇县| 临高县| 霍山县| 营口市| 交城县| 扶风县| 布尔津县| 商城县| 道真| 陆良县| 辰溪县| 台中县| 鸡西市| 沙田区| 兴文县| 陵川县| 抚宁县| 定南县| 蓝田县| 芮城县| 霍城县| 金昌市| 衡南县| 海口市| 田东县| 调兵山市| 淮滨县| 汉寿县| 遵义县| 信丰县| 永仁县| 桃园市| 咸阳市| 合川市| 桂阳县| 福鼎市|