CBV和FBV中用户认证装饰器

FBV中的示例:

在views.py中

# 用户认证的装饰器
def auth(func):
    def inner(request, *args, **kwargs):
        v = request.COOKIES.get('username')
        if not v:
            return redirect('/login/')

        return func(request, *args, **kwargs)

    return inner

@auth
def index(request):
    # 获取当前已经登录的用户名

    v = request.COOKIES.get('username')

    print v

    if not v:
        return redirect('/cookie/login/')

    return render(request, 'cookie/index.html', {'current_user':v})

CBV中的示例


# 方法1
from django.utils.decorators import method_decorator

class Order(views.View):

    @method_decorator(auth)
    def get(self, request):
        pass
    @method_decorator(auth)
    def post(self, request):
        pass

# 方法2

from django.utils.decorators import method_decorator

class Order(views.View):

    @method_decorator(auth)
    def dispatch(self, request, *args, **kwargs):
        return super(Order, self).dispatch(request, *args, **kwargs)

    def get(self, request):
        pass
    def post(self, request):
        pass

# 方法3

from django.utils.decorators import method_decorator

@method_decorator(auth, name='dispatch')
class Order(views.View):


    #def dispatch(self, request, *args, **kwargs):
    #    return super(Order, self).dispatch(request, *args, **kwargs)

    def get(self, request):
        pass
    def post(self, request):
        pass
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容