Tengo un CB DeleteView que intento decorar con el permiso de Guardian. El permiso debe ser para el usuario que ha iniciado sesión y para el objeto de DeleteView. Los documentos de Guardian no son muy claros al respecto, así que me pregunto si alguien podría aclarar.Django Guardian - ¿Cómo usar un decorador con permiso de uso con una vista basada en clase?
Respuesta
Para decorar cada instancia de una vista basada en clases, necesita decorar la definición de clase. Para ello se aplica el decorador con el método de envío() de la jemplo class.For,
class ExampleView(TemplateView):
template_name = 'Example.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ExampleView, self).dispatch(*args, **kwargs)
Soy consciente de esto. Sin embargo, específicamente pregunto cómo incluir al usuario y el objeto modelo en el decorador de permisos Guardian en un CBV. ¡Gracias! –
me encontré con casi el mismo problema y aquí está mi solución (adaptado a su caso):
vistas .py
class MyModelDeleteView(DeleteView):
model=MyModel
@method_decorator(permission_required_or_403('myapp.delete_mymodel',
(MyModel, 'slug', 'slug'), accept_global_perms=True))
def dispatch(self, *args, **kwargs):
return super(MyModelDeleteView, self).dispatch(*args, **kwargs)
Nota que puede pasar accept_global_perms de parámetros, que es Falso por defecto. Permite a los usuarios con 'myapp.delete_mymodel' permiso para eliminar cualquier objeto de la clase MyModel. Esto puede ser útil para los moderadores, por ejemplo.
- 1. Cómo usar Django clase basada en UpdateViews con FileFields
- 2. Vista basada en la clase Django Vista de lista con formulario
- 3. Django URL inversa con parámetros para una vista basada en clase
- 4. ¿Cómo agrego un método con un decorador a una clase en python?
- 5. clase basada vista genérica DetailView con un ModelForm revela un error - la forma de proceder?
- 6. extrañeza con un decorador
- 7. ¿Cómo construir un decorador con parámetros opcionales?
- 8. Uso de un decorador ILightweightLabelDecorator
- 9. agregue el método a una clase dinámicamente con el decorador
- 10. Objetos con permisos asignados por django-guardian no visibles en admin
- 11. Vista basada en clases de Paginate en Django
- 12. grupos de usuarios de Django con decoradores vs permiso
- 13. Actualizando el modelo de usuario en Django con la clase basada en UpdateView
- 14. Decorador Patrón con métodos específicos de decorador en Java
- 15. Usar una vista limita con scalaz
- 16. Acceso request.user en clase genérica basada vista CreateView con el fin de establecer el campo FK en Django
- 17. Obtener request.session desde una vista genérica basada en clase
- 18. Uso de jsonp con django-rest-framework
- 19. ¿Cómo usar Django con GWT?
- 20. ¿Cómo "usar" múltiples módulos con un "uso"?
- 21. ¿Cómo uso las señales de Django con un modelo abstracto?
- 22. Cómo usar $ .post con django?
- 23. Permiso Error denegado con Django al cargar un archivo
- 24. vista basada en clase de django - UpdateView - ¿Cómo acceder al usuario de solicitud mientras se procesa un formulario?
- 25. Enviando objeto request.user a ModelForm desde la vista genérica basada en clase en Django
- 26. Autenticación basada en tokens en Django
- 27. Detección de errores de permiso en pruebas de django
- 28. python: decorar una clase definiendo el decorador como una clase
- 29. Uso de Node.js con Django y Backbone.js
- 30. Django: error de prueba en una vista con @login_required
Su pregunta es similar a esta, miren. http://stackoverflow.com/questions/6069070/how-to-use-permission-required-decorators-on-django-based-based-views –