由于不会使用Django中强大的admin管理功能(学习的时候跳着学的),所以自己自定义了一个简单的包含权限认证的用户管理模块。但是在使用过程中发现有很多视图可能使用到了特定的权限,而进行权限验证的代码具有明显的重复性。所以想抽取出来封装成一个独立的函数,传入所需要的权限,访问这个视图的用户就应该具有这个权限,否则禁止访问。Python中的装饰器恰好适用这个场景——在执行函数之前,先做点什么

 

下面献上演示代码

这样定义好后,只需要在特定权限要求的视图函数定义上面用@调用就好了。比如,我现在有个后台管理的视图:

这个视图需要管理员才可以访问,我们可以在头部添加上面提到的装饰器用于限定访问权限:

这样就很方便的给每个有需要的视图增加权限验证功能,而不用每个视图都单独地写代码。

这里再给出新浪开发者社区Zephyr版主的改进意见。