Saltar al contenido

Django: ¿permisos de usuario para ciertas vistas?

Esta duda se puede solucionar de variadas maneras, sin embargo te damos la respuesta más completa en nuestra opinión.

Solución:

Los usuarios que no puedan agregar o cambiar, etc. un determinado modelo, no podrán verlo en el administrador.

Si estamos hablando de sus vistas personalizadas, entonces podría crear algo que verifique que un usuario tenga un permiso y devuelva un 404 si no tiene ese permiso. Los permisos están vinculados a los modelos y se pueden asignar varios permisos a un grupo.

Puede agregar un permiso a un modelo como este:

# myproject/myapp/models.py

class MyModel(models.Model):
    class Meta:
        permissions = (
            ('permission_code', 'Friendly permission description'),
        )

Luego puede verificar si un usuario tiene un permiso como este:

@user_passes_test(lambda u: u.has_perm('myapp.permission_code'))
def some_view(request):
    # ...

Usando permisos, puede agregarlos o eliminarlos fácilmente de usuarios y grupos simplemente usando la interfaz de administración.

Necesita administrar eso manualmente, pero es bastante fácil. Presumiblemente hay un attribute que determina si un grupo tiene o no permiso para ver una vista: entonces simplemente decora esa vista con el permission_required decorador, si se trata de una simple cuestión de si el usuario tiene un permiso particular, o user_passes_test si es un poco mas complicado:

@user_passes_test(lambda u: u.is_allowed_to_see_view_myview())
def myview(request):
    ...etc...

asumiendo que is_allowed_to_see_view_myview es una especie de método en el objeto Usuario.

Los documentos de autenticación son bastante completos.

Para vistas basadas en clases, puede heredar UserPassesTestMixin clase en la vista y definir test_func

from django.contrib.auth.mixins import UserPassesTestMixin

class MainView(UserPassesTestMixin, View):

    def test_func(self):
        return self.request.user.has_perm('app.get_main_view')

Eche un vistazo a estos documentos para obtener más detalles sobre cómo usar esto:

Recuerda algo, que puedes optar por la opción de añadir una evaluación objetiva si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *