que tienen este decorador, que se utiliza para decorar una vista de Django cuando yo no quiero que el fin de ser ejecutado si el argumento share
es True
(manejado por el middleware)añadiendo un argumento para un decorador
class no_share(object):
def __init__(self, view):
self.view = view
def __call__(self, request, *args, **kwargs):
"""Don't let them in if it's shared"""
if kwargs.get('shared', True):
from django.http import Http404
raise Http404('not availiable for sharing')
return self.view(request, *args, **kwargs)
la actualidad funciona así:
@no_share
def prefs(request, [...])
Pero estoy queriendo ampliar la funcionalidad un poco, por lo que va a trabajar de esta manera:
@no_share('prefs')
def prefs(request, [...])
Mi pregunta es ¿cómo puedo modificar esta clase de decorador para que acepte argumentos adicionales?
debería haber mencionado, he intentado ya, pero creo que Django funciona de forma diferente o algo porque eso no funcionó .Intenté poner 'print 'blah' 'en el init, pero todo lo que obtuve fue un montón de' blah's 'cuando inicié el servidor de desarrollo. No más 'bla' después de eso ... – priestc
Eso es lo esperado, __init__ solo se llama una vez, según la definición de cada función de vista que decore con esto. Se llama a la llamada __ cada vez que su servidor ejecuta la función de vista para responder a una solicitud. Esta respuesta va en la dirección correcta, consulte mi respuesta para obtener una respuesta más completa específica para su caso. – taleinat