只允许超级用户登录

时间:2009-09-10 08:54:49

标签: django django-admin

我写了一个django页面,只需要超级用户登录。所以我添加了

foo_view = staff_member_required(foo_view)

但它没有削减,现在我可以控制只允许员工标记用户登录,但这不会削减。我尝试过像

这样的东西
def foo_view(request):
       if not request.user.is_superuser:
           #render some "not allowed page"
       #else render the page

但似乎没有给我带来错误。

3 个答案:

答案 0 :(得分:50)

尝试:

from django.contrib.auth.decorators import user_passes_test

def foo_view(request):
    # ...
foo_view = user_passes_test(lambda u: u.is_superuser)(foo_view)

或(使用Python> = 2.4):

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)
def foo_view(request):
    # ...

答案 1 :(得分:1)

你建议的代码对我来说非常适合,自从Django 1.4以来我在许多项目中使用它:

from django.contrib.auth.decorators import login_required
from django.http import HttpResponse

@login_required
def foo_view(request):
   if not request.user.is_superuser:
       return HttpResponse('The user is not superuser')

   # Do whatever you need to do

这个代码对我来说非常适合,因为至少Django 1.4到1.7。

答案 2 :(得分:0)

以上答案似乎适用于早期版本的django。它们比较晚的版本有点复杂

对于django 1.11这里有点类似但更简单的策略。 点击here