1. 程式人生 > 遊戲 >Steam新一週銷量榜 《生化變種》登頂、《GTA5》第七

Steam新一週銷量榜 《生化變種》登頂、《GTA5》第七

django版本:2.2.22

# 你自己不要修改原始碼  出了bug很難搞

# 突破口urls.py
url(r'^login/',views.MyLogin.as_view())
"""
函式名/方法名 加括號執行優先順序最高
猜測
    as_view()
        要麼是被@staticmethon修飾的靜態方法
        要麼是被@classmethod修飾的類方法  正確
        
    @classonlymethod
    def as_view(cls, **initkwargs):
        pass
"""

    @classonlymethod
    def as_view(cls, 
**initkwargs): """ cls就是我們自己寫的類 MyCBV Main entry point for a request-response process. """ def view(request, *args, **kwargs): self = cls(**initkwargs) # cls是我們自己寫的類 # self = MyLogin(**initkwargs) 產生一個我們自己寫的類的物件
return self.dispatch(request, *args, **kwargs) """ 以後你們會經常看原始碼 但是在看python原始碼的時候 一定要時刻提醒自己面向物件方法查詢順序 先從物件自己找 再去產生物件的類裡面找 之後再去父類裡面找 """ """ 總結:看原始碼只要看到了self點一個東西 一定要問你自己當前這個self到底是誰
""" return view # CBV的精髓 def dispatch(self, request, *args, **kwargs): # 獲取當前請求的小寫格式 然後對比當前請求方式是否合法 # get請求為例 # post請求 if request.method.lower() in self.http_method_names: handler = getattr(self, request.method.lower(), self.http_method_not_allowed) """ 反射:通過字串來操作物件的屬性或方法 handler = getattr(自己寫的類產生的物件,'get',當找不到get屬性或者方法的時候就會用第三個引數) handler = 我們自己寫的類裡面的get方法 """ else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs) """ 自動呼叫get方法 """ # 要求:掌握到不看原始碼也能夠描述出CBV的內部執行流程(******)

圖解