flask之視圖

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()
相關文章
相關標籤/搜索