¿Hay un decorador en django similar a @login_required que también pruebe si el usuario es un superusuario?django @login_required decorator for a superuser
Gracias
¿Hay un decorador en django similar a @login_required que también pruebe si el usuario es un superusuario?django @login_required decorator for a superuser
Gracias
Utilice la user_passes_test
decorador:
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.is_superuser)
def my_view(request):
...
En el caso de miembros del personal es suficiente, se puede utilizar el @staff_member_required
decorador:
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_view(request):
...
Si usted quiere tener una funcionalidad similar a @staff_member_required puede escribir fácilmente su propio decorador. Tomando @staff_member como ejemplo, podemos hacer algo como esto.
from django.contrib.admin.views.decorators import user_passes_test
def superuser_required(view_func=None, redirect_field_name=REDIRECT_FIELD_NAME,
login_url='account_login_url'):
"""
Decorator for views that checks that the user is logged in and is a
superuser, redirecting to the login page if necessary.
"""
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_superuser,
login_url=login_url,
redirect_field_name=redirect_field_name
)
if view_func:
return actual_decorator(view_func)
return actual_decorator
Este ejemplo es un staff_member_required modificado, acaba de cambiar un cheque en lambda.
Bajé la votación porque el miembro del personal no tiene el mismo permiso que el superusuario. –
Cuando vine aquí, esto es lo que estaba buscando, es por eso que lo puse aquí, y lo dejaré aquí porque creo que puede ser útil para otra persona. – Bit68
Es @ Bit68. Lo estoy buscando :) –