Duda sobre return() en controlador

39 views
Skip to first unread message

Christian Espinoza

unread,
Jul 13, 2012, 11:58:29 AM7/13/12
to web2py-...@googlegroups.com
Hola a todos, tengo algunas dudas la capacidad del controlador para devolver objetos
tengo el siguiente código en mi controlador:

def empresa():
    jqgrid=plugin_editable_jqgrid(db.empresa,grid_name='test',db_name='db')
    return dict(grid=jqgrid)

este codigo me entrega directamente en la vista el diccionario:

grid:GRILLA

Como puedo enviar a la vista solo la grilla sin enviar el diccionario completo con su id??

-probé con return (jqgrid), pero no funcionó
-probé no devolviendo nada en el controlador y en la vista poniendo:
{{=grid}}

 pero tampoco funcionó

Puede el controlador devolver solo el objeto jqgrid sin una etiqueta?

Desde ya muchas gracias a todos..

Christian.

Alan Etkin

unread,
Jul 14, 2012, 9:21:07 AM7/14/12
to web2py-usuarios
El manejo de objetos en el controlador está descripto en el libro:
http://web2py.com/book/default/chapter/04#Workflow

Cuando usás return <objeto>, web2py automáticamente procesa la salida
del objeto Python para el cliente web. Si lo que querés es utilizar la
salida del objeto en la vista, lo normal es hacer algo así:

return dict(migrid=<objeto grid>)

y en la vista:

{{=migrid}}

Los índices del diccionario se leen en la vista como objetos del
namespace y sirven (por ejemplo) para agregar instrucciones con el
lenguaje de plantilla:

{{ if migrid.<propiedad>:}}
{{...}}
{{pass}}

On Jul 13, 12:58 pm, Christian Espinoza <chespin...@gmail.com> wrote:
> Hola a todos, tengo algunas dudas la capacidad del controlador para
> devolver objetos
> tengo el siguiente código en mi controlador:
>
> *def empresa():*
> *    jqgrid=plugin_editable_jqgrid(db.empresa,grid_name='test',db_name='db')
> *
> *    return dict(grid=jqgrid)*
>
> este codigo me entrega directamente en la vista el diccionario:
>
> grid:GRILLA
>
> Como puedo enviar a la vista solo la grilla sin enviar el diccionario
> completo con su id??
>
> -probé con *return (jqgrid)*, pero no funcionó
> -probé no devolviendo nada en el controlador y en la vista poniendo:
> *{{=grid}}*
>
>  pero tampoco funcionó
>
> Puede el controlador devolver solo el objeto *jqgrid *sin una etiqueta?

Christian Espinoza

unread,
Jul 14, 2012, 9:57:17 AM7/14/12
to web2py-...@googlegroups.com, spam...@gmail.com
Muchas gracias Alan por tu respuesta, en  mi caso estoy pasando un objeto plugin_jqgrid a la vista
pero me fije que aunque no indicara en la vista, el objeto que genero en el controlador
solo al especificar return(grid=grid) aparece en la vista, y no aparece solo la grilla
como quiero sino con el formato que explicaba antes: grilla: <Objeto grilla>.

-Tal vez estoy haciendo mal las cosas, yo quiero que aparezca solo la grilla y no su etiqueta
<etiqueta>:<objeto>

-Quisiera controlar mejor el orden en que aparecen las cosas en la vista, al usar este objeto
que se define y devuelve en el controlador, no puedo acomodarlo en la vista, probé juntandolo 
con un formulario los que traté de ordenarlos de forma:

-controlador.py-
return (form, grilla)
-vista.html-
{{=form}}
{{=grilla}}  

Y aparece primero el objeto grilla...

Desde ya muchas gracias por la paciencia..
Christian.

Alan Etkin

unread,
Jul 15, 2012, 7:47:26 AM7/15/12
to web2py-usuarios
On Jul 14, 10:57 am, Christian Espinoza <chespin...@gmail.com> wrote:
> Muchas gracias Alan por tu respuesta, en mi caso estoy pasando un objeto
> plugin_jqgrid a la vista

Por la explicación que pude consultar en este link:
http://blog.web2py.es/web2py_plugins/editable-jqgrid/

La forma recomendada de utilizarlo es:

1) devolver el objeto creado por el plugin en el controlador

return dict(customers=plugin_editable_jqgrid(...))

2) En la vista, incluír el elemento con el operador =

{{=customers}}

El tema del orden me parece que es por los parámetros de css asociados
al plugin, porque por defecto web2py agrega los elementos en el orden
en que se incluyen en la vista

Christian Espinoza

unread,
Jul 16, 2012, 4:22:36 PM7/16/12
to web2py-...@googlegroups.com, Alan Etkin
Hola Alan, gracias por tu respuesta,

Se genera automáticamente una tabla y deja en segundo lugar cualquier cosa que agregue.

Creo que si persisto en usar este js no me quedará otra que aprender a hacer mis propios plugins o modificarlos para 
que hagan las cosas como quiero.  :-)

Gracias.
Christian.
Reply all
Reply to author
Forward
0 new messages