Django 仅允许超级用户登录
我写了一个django页面,只需要超级用户登录。所以我补充说Django 仅允许超级用户登录,django,django-admin,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
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
但它似乎没有帮助,因为它给了我错误。试试:
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时):
您建议的代码非常适合我,自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,这段代码非常适合我。以上答案似乎适用于Django的早期版本。它们比更晚的版本有点复杂 对于Django1.11,这里有一个类似但更简单的策略。
单击您的第二个代码段给您带来了什么错误?@Dominic我尝试使用user_Pass_test,但这会导致重定向循环。似乎它一次又一次地将请求重定向到登录屏幕,因为登录的用户不是超级用户。
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