Estoy desarrollando en una aplicación donde tengo que crear roles entre los usuarios. Django tiene previsto esto con las tablas "auth_group", "auth_permission" y "auth_user", una relacion de muchos a muchos entre group y permission genera la tabla "auth_group_permissions". Alguien que halla trabajado con roles en este framework que me guie hacia el tutorial correcto o me explique a grandes rasgos como entrarle a este asunto.
Muchas gracias de ante mano.
Django - grupos y permisos
Django - grupos y permisos
Axioma de Espinosa
Si funciona, no lo toque.
Si funciona, no lo toque.
Re: Django - grupos y permisos
Hola!!!
Si das una idea sobre lo que quieres hacer creo que es mejor, porque si lo que quieres es un tutorial te puedo orientar que leas el libro de django en espanol que tienes buenos ejemplos
Salu2
Si das una idea sobre lo que quieres hacer creo que es mejor, porque si lo que quieres es un tutorial te puedo orientar que leas el libro de django en espanol que tienes buenos ejemplos
Salu2
Re: Django - grupos y permisos
Lo q quiero es crear grupos y q estos grupos tengan permisos diferentes y lueg poder acceder a esto desde las vistas para filtrar q usuario puede hacer q. El tutorial en español toca estos temas????
SDS
SDS
Axioma de Espinosa
Si funciona, no lo toque.
Si funciona, no lo toque.
Re: Django - grupos y permisos
Efectivamente, el manual toca estos temas lastima q tuve q buscar mucho para dar con ellos. De todas maneras voy a dejar el "know how" para otros aprendieses.
1- Para estos fines se puede usar el decorador: "login_required" q restringe el uso de una función de una vista a un usuario q este logueado.
2- También se puede usar el decorador: "user_passes_test" el cual como su nombre lo indica te hace un test de validación para la función de la vista y de no pasarlo por defecto te manda para la pagina de loguin, aunque esto puede ser cambiado. Ejemplo q verifica si un usuario tiene un permiso determinado:
Otro ejemplo q verifica si un usuario pertenece a un grupo determinado, sino lo manda para una pagina personalizada. (Es muy versátil este decorador, con imaginación se pueden lograr muchas cosas con el)
3- permission_required es otro decorador q verifica un permiso determinado.
En las plantillas tambien es necesario tener un control sobre los roles de los usuarios y para esto se usa:
y para los permisos:
Esto no lo invente yo, se encuentra en: https://docs.djangoproject.com/en/dev/topics/auth/ cualquier duda amplían ahí o simplemente preguntan aquí en el foro.
1- Para estos fines se puede usar el decorador: "login_required" q restringe el uso de una función de una vista a un usuario q este logueado.
2- También se puede usar el decorador: "user_passes_test" el cual como su nombre lo indica te hace un test de validación para la función de la vista y de no pasarlo por defecto te manda para la pagina de loguin, aunque esto puede ser cambiado. Ejemplo q verifica si un usuario tiene un permiso determinado:
Código: Seleccionar todo
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.has_perm('polls.can_vote'))
def my_view(request):
...
Código: Seleccionar todo
from django.contrib.auth.decorators import login_required, user_passes_test
@login_required
@user_passes_test(lambda u: u.groups.filter(name='Student').count() == 1, login_url='/myapp/denied/')
def some_view(request):
# Do whatever this view should do
En las plantillas tambien es necesario tener un control sobre los roles de los usuarios y para esto se usa:
Código: Seleccionar todo
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
Código: Seleccionar todo
{% if perms.foo %}
<p>You have permission to do something in the foo app.</p>
{% if perms.foo.can_vote %}
<p>You can vote!</p>
{% endif %}
{% if perms.foo.can_drive %}
<p>You can drive!</p>
{% endif %}
{% else %}
<p>You don't have permission to do anything in the foo app.</p>
{% endif %}
Axioma de Espinosa
Si funciona, no lo toque.
Si funciona, no lo toque.