def auth(func):
def inner(*args, **kwargs):
print('before')
result = func(*args, **kwargs)
print('after')
return result
return inner
class indexview(views.view):
methods = ['get']
decorators = [auth, ]
def dispatch_request(self):
print('index')
return 'index!'
#如果不傳name,這所有返回的都是view,這樣就會報錯,所有人家必須你要傳遞引數
#然後他傳遞給view_func的其實就是你檢視類中的dispatch_request方法。這樣我們沒有辦法,在乙個檢視類中寫多種請求方式
#或者,通常用此方式
class indexview(views.methodview):
methods = ['get']
#cbv新增裝飾,用這個,我們看as_view中就知道了
decorators = [auth, ]
def get(self):
return 'index.get'
def post(self):
return 'index.post'
#如果我們繼承了methodview,他幫我們重寫了,dispatch_request方法,他給我們做了乙個分發,通過請求,來執行不同的函式
#1 寫類,繼承baseconverter
from flask import flask, views, url_for
from werkzeug.routing import baseconverter
class regexconverter(baseconverter):
"""自定義url匹配正規表示式
"""def __init__(self, map, regex):
super(regexconverter, self).__init__(map)
self.regex = regex
def to_python(self, value):
"""路由匹配時,匹配成功後傳遞給檢視函式中引數的值
"""return int(value)
def to_url(self, value):
"""使用url_for反向生成url時,傳遞的引數經過該方法處理,返回的值用於生成url中的引數
"""val = super(regexconverter, self).to_url(value)
return val
# 新增到flask中
def index(nid):
print(url_for('index', nid='888')) #這裡其實呼叫to_url方法
return 'index'
if __name__ == '__main__':
Django中的FBV和CBV區別
fbv就是在url中乙個路徑對應乙個函式 urlpatterns url r admin admin.site.urls url r index views.index 在檢視函式中 def index request return render request,index.html cbv就是在u...
nginx location指令中的正規表示式
官網說明 測試所有的字首字串 如果匹配到 後的字串,則使用這個location 如果最長的字首字串前有 標記,則使用這個location 儲存最長字首字串的location 測試正規表示式 如果匹配,則使用這個location 如果沒有匹配,則使用最長字首字串的location。location u...
Django中的FBV和CBV對比分析
在學習django過程中在views.py進行邏輯處理時接觸到了兩種檢視的書寫風格,fbv和cbv fbv 指 function based views,即基於函式的檢視 cbv 指 class based views,即基於類的檢視 基於類的檢視相較於基於函式的檢視可以更加便利的實現類的繼承封裝等...