Django 登入時使用到的多繼承

2021-10-03 20:33:26 字數 1353 閱讀 6584

user.views類中的userinfoview類中多繼承loginrequiredmixin, view。

from django.views.generic import view

from utils.mixin import loginrequiredmixin

​# userinfoview

class userinfoview(loginrequiredmixin, view):

'''使用者中心-資訊頁'''

def get(self, request):

# page='user'

return render(request, 'user_center_info.html')

urls配置:

url('^$', userinfoview.as_view(), name='user')
loginrequiredmixin類定義:

from django.contrib.auth.decorators import login_required

​class loginrequiredmixin(object):

@classmethod

def as_view(cls, **initkwargs):  # 這個as_view的引數必須與assp的urls中的as_view中的引數相同

# 呼叫父類的as_view

view = super(loginrequiredmixin, cls).as_view(**initkwargs)  # python2的使用super的方式

# super(foochild,self) 首先找到 foochild 的父類(就是類 fooparent),然後把類 foochild 的物件轉換為類 fooparent 的物件,**於菜鳥教程

return login_required(view)

userinfoview類自己本身沒有as_view()方法,於是它呼叫父類的as_view()方法,

根據呼叫順序(通過子類類名.__mro__可以檢視),先呼叫loginrequiredmixin的as_view()方法,

進入到loginrequiredmixin的as_view()方法一看,又有乙個super(loginrequiredmixin, cls).as_view(**initkwargs)父類方法呼叫,

可是userinfoview因為本身沒有as_view()方法已經呼叫過一次loginrequiredmixin父類的方法了,

所以,這次的他將按順序呼叫view父類的as_veiw()方法。

Django登入使用的技術和元件

登入 獲取使用者所有的資料 每條資料請求的驗證 成功之後獲取所有正確的資訊 失敗則顯示錯誤資訊 登陸頁面管理 def login request if request.method get return render request,login.html elif request.method po...

python爬蟲使用POST登入時的注意事項

requests提供了乙個session的概念,在連續訪問網頁時能自動處理cookie的方式,程式會自動把cookie的值帶上,像瀏覽器一樣,不用關注具體細節。用法示例如下 import reqests longinurl s requests.session 首先訪問登入介面,作為遊客,伺服器會先...

多檔案使用全域性變數時extern的規範用法

關鍵字extern用來宣告變數或者函式是乙個外部變數或者外部函式,也就是說告訴編譯器是在其他檔案中定義的,編譯的時候不要報錯,在鏈結的時候按照字串定址可以找到這個變數或者函式。函式預設是外部型別的,不需要顯示宣告,但是變數必須,如果想把乙個函式宣告為只在本檔案範圍有效,那麼可以用static來說明 ...