[pyar] Puedo usar decoradores para esto?

Jesús Francisco jgomo3 en gmail.com
Jue Jun 10 18:13:08 ART 2010


El día 10 de junio de 2010 16:55, Hystrix <ego en hystrix.com.ar> escribió:
> Buenas gente, que tal?
>
> Estoy haciendo un app en Django y mirando las vistas que estaba por
> escribir me di cuenta que estoy repitiendo una estructura para todas.
> Sin saber mucho del tema me pregunto, podre usar un decorador para
> eliminar la repeticion?
>
> Las vistas comparten esta estructura basica:
>
> def vista_a(request, id):
>  data = {'area': 'i'}
>  data['obj'] = get_object_or_404(modelo, pk=id)
>  #cosas propias de la vista
>  #usa cosas de data y agrega cosas a data
>  #tambien usa cosas de request
>  #aca se define el template
>  return render_to_response(template, data)
>

Abstrayendome de Django... intuitivamente haría algo como:

def data_decorator(vista):
    def f(request, id):
        data = {'area': 'i'}
        data['obj'] = get_object_or_404(modelo, pk=id)
        template = vista(request, data)
        return render_to_response(template, data)

@def data_decorator(vista):
def vista_a(request, data):
    #cosas propias de la vista
    #usa cosas de data y agrega cosas a data
    #tambien usa cosas de request
    #aca se define el template
    return template


>
> Mi idea inicial era hacer un decorador que se ocupe de crear "data" y
> despues devolver la respuesta http con render_to_response.
> Pero no se como hacer para pasar los datos entre el decorador y la
> funcion decorada.
>
> Tampoco quiero meterme en demasiadas complicaciones porque no se
> justifica en este caso pero tal vez hay una forma simple y elegante de
> evitar la repeticion en todas las vistas. Hay?
>
> --
> Hystrix
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



More information about the pyar mailing list