flask的CBV模式flask
def auth(func): def inner(*args, **kwargs): result = func(*args, **kwargs) return result return inner class IndexView(views.MethodView): # methods = ['POST'] #只容許POST請求訪問 decorators = [auth,] #若是想給全部的get,post請求加裝飾器,就能夠這樣來寫,也能夠單個指定 def get(self): #若是是get請求須要執行的代碼 v = url_for('index') print(v) return "GET" def post(self): #若是是post請求執行的代碼 return "POST" app.add_url_rule('/index', view_func=IndexView.as_view(name='index')) #name指定的是別名,會當作endpoint使用 if __name__ == '__main__': app.run()
flask中的FBV模式app
方式一: @app.route('/index',endpoint='xx') def index(nid): url_for('xx',nid=123) return "Index" 方式二: def index(nid): url_for('xx',nid=123) return "Index" app.add_url_rule('/index',index)
隨便練習的CBV和FBVpost
from flask import Flask,render_template,redirect,views app = Flask(__name__) import functools def wapper(func): @functools.wraps(func) def inner(*args,**kwargs): print('before') return func(*args,**kwargs) return inner @app.route('/xxxx',methods=['GET','POST']) @wapper def index(): return "Index" # class IndexView(views.View): # methods = ['GET'] # decorators = [wapper, ] # # def dispatch_request(self): # print('Index') # return 'Index!' # # app.add_url_rule('/index', view_func=IndexView.as_view(name='index1')) # name=endpoint class IndexView(views.MethodView): methods = ['GET'] decorators = [wapper, ] def get(self): return 'Index.GET' def post(self): return 'Index.POST' app.add_url_rule('/index', view_func=IndexView.as_view(name='index2')) # name=endpoint if __name__ == '__main__': app.run()