user.views類中的userinfoview類中多繼承loginrequiredmixin, view。
urls配置:from django.views.generic import viewfrom utils.mixin import loginrequiredmixin
# userinfoview
class userinfoview(loginrequiredmixin, view):
'''使用者中心-資訊頁'''
def get(self, request):
# page='user'
return render(request, 'user_center_info.html')
loginrequiredmixin類定義:url('^$', userinfoview.as_view(), name='user')
userinfoview類自己本身沒有as_view()方法,於是它呼叫父類的as_view()方法,from django.contrib.auth.decorators import login_requiredclass 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)
根據呼叫順序(通過子類類名.__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來說明 ...