我的Django项目中的权限机制

495 查看

本文主要介绍我在Django博客使用的权限设置,我的博客中几乎所有的权限设置都是我自己写的。这么做的原因是我在写Flask博客的时候,学到了一些这方面的知识,感觉很不错。因此就借鉴里面的逻辑,自己写了这方面的代码。

1、关于文章的访问权限

我就从Model和View两层来说。

首先我在Model中定义一个字段,用来指示是否公开,是否允许别人可见: 源代码如下:

access字段指定该字段是否公开。如果设为公开那么所有人可以访问;如果设为私密,那么就不允许一些用户访问。那此时问题来了,该如何设置限制访问逻辑。我的代码如下,该方法也定义在Model中:

上面的代码很简单,如果是私密的,只有文章作者或者管理员可以访问。

在View中的代码:

看这段代码最后面,如果can_acees方法返回False,就抛出一个禁止Django内置的禁止访问的异常,即返回403页面。

2、自定义视图权限装饰器

首先自己定义一个装饰器函数,用来修饰要设置权限的视图函数或类方法。 装饰器函数源代码: