Django视图仅对管理员可见

时间:2016-06-02 16:28:00

标签: django django-rest-framework

我在django后端有一个视图,我只想让管理员看到。

@api_view(('GET',))
def get_analytics(request):
# Number of users who dogged in once to our system today
login_count= User.objects.filter(last_login__startswith=timezone.now().date()).count()


data = {}
data['login_count'] = login_count

return JSONResponse(data)

它是基于功能的视图。如何让它仅对管理员可见?我从我的角应用程序中点击了相应的URL来获取和呈现数据。

2 个答案:

答案 0 :(得分:2)

您可以在您的视图中添加IsAdminUser权限类,以限制只有管理员用户访问权限。只有具有管理员权限的用户才会被授予访问权限。其他人将被拒绝访问。

@api_view(('GET',))
@permission_classes((IsAdminUser, )) # add the permission class
def get_analytics(request):
    ...
    return JSONResponse(data)

如果权限失败,则会根据some conditions提出exceptions.PermissionDeniedexceptions.NotAuthenticated例外。

答案 1 :(得分:2)

您也可以使用以下装饰器

from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required