首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在基于类的视图中使用permission_required装饰器?

如何在基于类的视图中使用permission_required装饰器?
EN

Stack Overflow用户
提问于 2012-06-07 11:04:09
回答 2查看 2.7K关注 0票数 6

我有一个CB DeleteView,我正试着用卫报的permission_required装饰它。权限应为已登录用户和DeleteView对象的权限。卫报的文档对此不太清楚,所以我想知道是否有人可以澄清。

EN

回答 2

Stack Overflow用户

发布于 2012-06-28 00:36:12

我遇到了几乎相同的问题,以下是我的解决方案(适用于您的情况):

views.py

代码语言:javascript
复制
class MyModelDeleteView(DeleteView):
    model=MyModel

    @method_decorator(permission_required_or_403('myapp.delete_mymodel',
        (MyModel, 'slug', 'slug'), accept_global_perms=True))
    def dispatch(self, *args, **kwargs):
        return super(MyModelDeleteView, self).dispatch(*args, **kwargs)

请注意,您可以传入accept_global_perms参数,即默认为False。允许具有'myapp.delete_mymodel'权限的用户删除MyModel类的任何对象。例如,这对版主很有用。

Guardian Decorators documentation

票数 5
EN

Stack Overflow用户

发布于 2012-06-07 12:00:17

要装饰基于类的视图的每个实例,您需要装饰类定义本身。为此,您将装饰器应用于class.For示例的dispatch()方法,

代码语言:javascript
复制
class ExampleView(TemplateView):
    template_name = 'Example.html'

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(ExampleView, self).dispatch(*args, **kwargs)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10925127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档