¿Puedo usar la verificación de permisos de la aplicación Auth dentro de una plantilla en Django? (Quiero mostrar un formulario simple al final de la plantilla para usuarios privilegiados)
Y lo que es más importante, ¿debería hacerlo en absoluto o no es el "estilo Django"?
django
django-authentication
Daniel
fuente
fuente
Respuestas:
Si está buscando verificar los permisos en las plantillas, el siguiente código sería suficiente:
{% if perms.app_label.can_do_something %} <form here> {% endif %}
Donde modelo se refiere al modelo para el que el usuario necesita permisos para ver el formulario.
Consulte https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions para obtener más ejemplos.
(Esto requiere el siguiente procesador de contexto para estar habilitado:
django.contrib.auth.context_processors.auth
)fuente
perms.app_label.foobar
siempre será verdadero, incluso si escribió mal el nombre del permiso.Probado en Django 2.0 +
Si desea ver todos los permisos que tiene el usuario que inició sesión, en su plantilla (.html), imprima:
O
{{ perms }}
Para verificar si el usuario tiene permiso, use:
P.ej :
Aquí: Utilization es el nombre de mi aplicación. Factura es un nombre de modelo.
Tenga en cuenta que, en general, habrá 4 tipos de permisos:
Además, si desea ver todos los permisos que tiene un usuario debido a los grupos a los que pertenece, ejecute el shell de Django ...
user = User.objects.get(username='somename') user.get_group_permissions()
Aquí, todos los permisos enumerados se deben a los grupos a los que pertenece.
fuente
Si necesita más granularidad en la verificación de permisos (en un objeto en particular, por ejemplo), consulte esta extensión: http://django-authority.readthedocs.org/en/latest/check_templates/
fuente
lamento 'desenterrar' esta publicación, pero tengo un problema relacionado con los permisos, vea mi publicación: Django: la lógica no se aplica bien en la plantilla con permisos (perm
Como Arindam parece estar muy cómodo con este concepto, espero que él u otro puedan ayudarme.
los permisos no se aplican incluso si el valor es correcto cuando busco {{perms}} en mi plantilla devuelve un objeto pero no la lista de permisos si busco {{perms.randomization.can_randomize}} devuelve False (o True ) ese es el buen valor que mi aplicación se llama aleatorización y defino el permiso can_randomize en los modelos de aleatorización (usando meta) que es parte de mi aplicación de aleatorización
Reviso settings.py pero todas las costuras están bien
fuente