permitindo apenas o login super usuário
-
05-07-2019 - |
Pergunta
Eu escrevi uma página Django que requer apenas super-usuários de login. Então eu adicionei
foo_view = staff_member_required(foo_view)
mas não cortar, agora eu posso controlar apenas permitindo que o pessoal marcado usuários façam login, mas isso não cortar. Eu tentei algo como
def foo_view(request):
if not request.user.is_superuser:
#render some "not allowed page"
#else render the page
mas não parece ajudar como me dando erros.
Solução
Tente:
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)
Or (com Python> = 2.4):
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.is_superuser)
def foo_view(request):
# ...
Outras dicas
O código que você sugeriu obras perfeito para mim, eu usei-o em muitos projetos desde 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
Este código funciona perfeito para mim desde Django 1,4-1,7, pelo menos.
respostas acima parece ser para versões muito precoces de Django. Eles são pouco complicado do que para a versão mais tarde
para Django 1.11 aqui é uma estratégia semelhante, mas mais simples bit. clique aqui
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow