这种情况很简单:我正在写一个多用户博客系统。 该系统应防止非所有者编辑或删除博客文章。 在我看来,我使用通用视图。
类BlogUpdateView(更新视图):...
我知道我应该使用@method_decorator装饰调度方法。 然而,大多数例子只是@method_decorator(login_required)或模型级别的权限。 如何申请对象级别的权限检查request.user是否是这个博客帖子的作者吗? 例如,我试图用Django的权威应用,我有一个BlogPermission类文件。 我试图定义这个类如方法
def blog_edit(self, ??, ??)
我应该把这个方法?
然后调用此类似: @method_decorator(permission_required('blog_permission.blog_edit(???)'))
我应该怎么过会在这里?
更新:后读method_decorator代码,我发现它只能接受功能,无需论证。 我想这就是为什么permission_required不在这里工作了。 但是,什么是工作都是围绕这件事吗?
更新的解决方案:
在调度方法,我检查用户权限,然后返回HttpResponseForbidden()如果用户不符合许可。