激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 基于Django用戶認證系統詳解

基于Django用戶認證系統詳解

2021-01-16 00:31Blog的猿序程個一 Python

下面小編就為大家分享一篇基于Django用戶認證系統詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一. 認證系統概要

create_user 創建用戶

authenticate 驗證登錄

login 記住用戶的登錄狀態

logout 退出登錄

is_authenticated 判斷用戶是否登錄

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

二. 創建用戶和驗證登錄

當用戶注冊的時候用create_user(username,password,email)默認情況下is_active=True,is_staff=False,is_superuser=False。

底層將password用hash算法加密之后存儲到數據庫中。

當用戶登錄的時候用authenticate(username=username,password=password)驗證登錄,判斷數據庫中是否存在用戶輸入的賬號和密碼,返回一個user對象。

底層將password用hash算法加密后和數據庫中password進行對比。

三. 記住用戶的登錄狀態

當用戶登錄的時候用login(request,user)來記住用戶的登錄狀態,默認將用戶的id存儲在session中。

login有兩個參數一個是request,一個是user,user的來源必須是authenticate返回的。也就是說用login之前必須先調用authenticate。

四. 退出登錄

當用戶注銷的時候用logout(request),只需要一個參數request。

五. 判斷用戶是否登錄

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

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

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

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

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

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

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

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

?
1
2
3
4
5
6
7
class LoginRequiredView(View):
  @classmethod
  def as_view(cls, **initkwargs):
    # 調用View類中as_view方法
    view = super(LoginRequiredView, cls).as_view(**initkwargs)
    # 調用login_required裝飾器
    return login_required(view)

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

?
1
2
3
4
5
6
7
class LoginRequiredMixin(object):
  @classmethod
  def as_view(cls, **initkwargs):
    # 調用View類中as_view方法
    view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
    # 調用login_required裝飾器
    return login_required(view)

以上這篇基于Django用戶認證系統詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/RomanticLife/archive/2018/02/21/8456940.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人精品久久 | 精品91av | 久久精品国产99久久6动漫亮点 | 鲁丝一区二区三区不属 | 91av在线免费观看 | 一区二区三区日韩 | 久草在线小说 | 免费一区在线 | 韩国十九禁高潮床戏在线观看 | 高清av免费| 久久久久久久网站 | 久久久久一本一区二区青青蜜月 | 日本在线观看高清完整版 | 久久久国产一级片 | 91看片成人| 精品亚洲午夜久久久久91 | 午夜小影院 | 免费一及片 | 国产免费片 | 万圣街在线观看免费完整版 | 欧美一级一区二区三区 | 免费视频www在线观看 | 91色一区二区三区 | 国产美女一区二区在线观看 | 麻豆91精品91久久久 | 在线视频观看国产 | 国产午夜精品视频免费不卡69堂 | 一级大黄毛片 | 欧美精品一区二区三区久久久 | 色婷婷久久久久久 | 国产一区在线视频观看 | 欧美一级片网站 | 性欧美极品xxxx欧美一区二区 | 91成人免费在线视频 | 日本一区二区不卡高清 | 欧美成人一区二区三区 | 福利在线免费视频 | 国产精品999在线观看 | 亚洲欧美国产精品va在线观看 | 国产高清毛片 | 欧美成人午夜 |