跳转到主要内容

Django视图的装饰器混合集合。

项目描述

Django的基于类视图混合集合。Django-Decoratormixins还包括一个将视图装饰器转换为基于类视图混合的函数。

用法

如果您有一个装饰器,使用方法非常简单,只需调用DecoratorMixin并将装饰器作为参数传递即可。

from decoratormixins import DecoratorMixin

def my_decorator(f):
    # ...

MyDecMixin = DecoratorMixin(my_decorator)

装饰器工厂

许多Django内置的装饰器实际上是装饰器工厂。在这种情况下,在从它们中创建混合之前,需要从它们中获取装饰器。

这里有一个装饰器工厂,它修改了一个视图以在GET请求中要求某个参数

def require_get_param(param):
    def actual_decorator(view_func):
        @wraps(view_func)
        def _wrapped_view_func(request, *args, **kwargs):
            if request.GET.get(param, None) is not None:
                response = view_func(request, *args, **kwargs)
                response.content += param
                return response
            else:
                return HttpResponseNotFound("{} is not present.".format(param))

        return _wrapped_view_func
    return actual_decorator

为了使用它,我们必须指定我们需要的参数

require_foo_decorator = require_get_param('foo')

现在我们可以调用DecoratorMixin在该装饰器上

RequireFooMixin = DecoratorMixin(require_foo_decorator)

应用混合

一旦您有了所需的混合,就可以将其与基于类的视图混合在一起。

class TestView(View):
    def get(self, request):
        return HttpResponse("OK")

class TestViewFoo(RequireFooMixin, TestView):
    pass

TestViewFoo.as_view()将返回一个可用于您的urls.py中的视图方法。

组合混合

可以为单个类使用多个混合,但顺序很重要。在类定义中最左侧的混合将是外部装饰器。

from decoratormixins.auth import LoginRequiredMixin
from decoratormixins.http import RequireGetMixin

# TestView from above

class LoggedInGetRequestView(LoginRequiredMixin,
                             RequireGetMixin,
                             TestView):
    pass

包含的混合

以下是所有包含的混合类及其所在模块的列表。

  • decoratormixins.auth

    • LoginRequiredMixin

  • decoratormixins.csrf

    • CsrfProtectMixin

    • EnsureCsrfCookieMixin

    • CsrfExemptMixin

  • decoratormixins.http

    • ConditionalPageMixin

    • RequireGetMixin

    • RequirePostMixin

    • RequireSafeMixin

    • EtagMixin

    • LastModifiedMixin

  • decoratormixins.cache

    • NeverCacheMixin

  • decoratormixins.clickjacking

    • XFrameOptionsDenyMixin

    • XFrameOptionsDenySameoriginMixin

    • XFrameOptionsDenyExemptMixin

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django-decoratormixins-1.0.0.tar.gz (4.0 kB 查看散列)

上传时间

由以下支持