打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
应用级别的权限注册(自定义权限)以及使用



django自身携带的是基于model注册数据库级别的权限(依赖model中定义的表权限),这里简单的描述下应用级别的权限注册。

首先admin管理页面只有user和group等注册应用,我们要先将content type 和permission注册到admin页面,使之出现。

在admin.py中

from django.contrib import admin

from django.contrib.auth.models import Permission

from django.contrib.contenttypes.models import ContentType

@admin.register(Permission)

class PermissionAdmin(admin.ModelAdmin):

    list_display = ('codename', 'content_type_id', 'name')

    search_fields = ('codename', 'content_type_id', 'name')

@admin.register(ContentType)

class ContentTypeAdmin(admin.ModelAdmin):

    list_display = ('app_label', 'model')

    search_fields = ('app_label', 'model')

这样我们就可以添加删除permission和content type了,下面我们进行自定义添加权限的注册使用。

1.权限的注册

admin管理页面添加Content types

 

 

然后添加permission

这样我们的应用权限就注册成功了,我们就可以将此权限赋予组或者个人用户下进行使用。

  

 

2.装饰函数的使用

基于函数的装饰:

from django.contrib.auth.decorators importlogin_required, permission_required

 

@permission_required('auth.add_user',login_url='/noperm/')

@login_required(login_url='/login')

def  test(request):

   return JsonResponse({'data':'success test permission! '})

 

基于类的装饰:

class Test(APIView):

   @method_decorator(permission_required('auth.can_read_sa',login_url='/noperm/'))

   @method_decorator(login_required(login_url='/login'))

   def dispatch(self, *args, **kwargs):

       return super(Test, self).dispatch(*args, **kwargs)

 

   def get(self, request):

       return JsonResponse({'data':'test class OK!'})



对于dispatch的扩展http://www.360doc.com/showweb/0/0/758246451.aspx

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Django认证系统并不鸡肋反而很重要
Django(四)后台管理及Field参数
【Django】 初步学习
「Python学习」Django 权限控制
使用Django实现微信公众号用户openid登录认证(示例代码)
Django学习笔记(2)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服