返回顶部

06- flask装饰器和类视图

import functools
from flask import Flask,views
app = Flask(__name__)


def wrapper(func):
    @functools.wraps(func)
    def inner(*args,**kwargs):
        return func(*args,**kwargs)

    return inner



class UserView(views.MethodView):
    methods = ['GET']
    decorators = [wrapper,]

    def get(self,*args,**kwargs):
        return 'GET'

    def post(self,*args,**kwargs):
        return 'POST'

app.add_url_rule('/user',None,UserView.as_view('uuuu'))

if __name__ == '__main__':
    app.run()

权限认证

import functools
from flask import Flask, views, g, redirect, request
app = Flask(__name__)


@app.before_request
def before_request():
    print("对用户的身份进行校验")
    print(request.headers.get("api-Key", ""))
    # 如果直接在这个函数里面返回数据的话,那么真实的视图函数就不会被执行了
    # 可以在此函数中做一些请求的判断
    g.name = 'test1'
    return None


def Svip(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        print("Svip 用户权限认证")
        print(g.name)
        return func(*args, **kwargs)
    return inner


def VIP(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        print("vip 用户才可以登录")
        print(g.name)
        return func(*args, **kwargs)
    return inner


class UserView(views.MethodView):
    # methods = ['GET']
    decorators = (VIP,)

    def get(self, user_id, *args, **kwargs):
        print("UserView")
        print(user_id)
        print(g.name)
        return 'GET'

    def post(self, user_id, *args, **kwargs):
        print(user_id)
        return 'POST'


app.add_url_rule('/user/<int:user_id>', None, UserView.as_view('user info'))


if __name__ == '__main__':
    app.run()

 

posted @ 2018-08-01 16:20  Crazymagic  阅读(358)  评论(0)    收藏  举报