CBV和FBV中用户认证装饰器

作者: 廖马儿 | 来源:发表于2017-08-23 16:15 被阅读5次

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

相关文章

  • CBV和FBV中用户认证装饰器

    FBV中的示例: CBV中的示例

  • Mixin

    Mixin 在FBV中,如果希望为视图的访问加上限制的话可以直接使用装饰器,但在CBV中就不能直接使用装饰器了。 ...

  • 20-Django之CBV、序列化、Form表单

    一、FBV & CBV CBV定义 Djanggo中的请求处理方式FBV: Function Bas...

  • django中的FBV和CBV

    django中请求处理方式有2种:FBV 和 CBV FBV FBV(function base views) 就...

  • DRF进阶

    一、Django的FBV和CBV FBV:Function-base views基于函数的视图CBV:Class-...

  • Django-FBV 和 CBV

    FBV 和 CBV django中请求处理方式有2种: FBV(function base views)** 就是...

  • Django中的CBV

    django中请求处理方式有2种:FBV 和 CBV CBV CBV(class base views) 就是在视...

  • Django-视图CBV执行流程详解

    FBV和CBV其实就是要么写函数要么写类,那么内部原理是怎么实现? FBV写法 CBV写法 原理 FBV可以直接通...

  • Django使用CBV处理请求

    在Django中有两种基本的处理用户请求的方式,分别是FBV和CBV,这里讲的是关于使用CBV处理用户请求的方式 ...

  • Django的视图类

    1.FBV和CBV的区别和定义 FBV Function Base View 基于函数的视图函数来处理请求CBV...

网友评论

    本文标题:CBV和FBV中用户认证装饰器

    本文链接:https://www.haomeiwen.com/subject/godddxtx.html