[pyar] [web.py] más de un parámetro pasado a una pagina

manuel quiñones manuel.por.aca en gmail.com
Mie Oct 6 12:33:53 ART 2010


El día 6 de octubre de 2010 12:26, Andrés Gattinoni
<andresgattinoni en gmail.com> escribió:
> 2010/10/6 Emanuel Herrmann <emanuelsantiaggoherrmann en gmail.com>:
>>
>> ok el asunto no se si refleja bien lo que quiero explicar así que me explayo
>>
>> tengo una aplicacion web que tiene una base de datos con 3 tablas users,
>> canciones y usuarios_canciones (relacion m a n entre users y canciones)
>> en una parte de la aplicacion listo las canciones que posee un usuario junto
>> con un boton "delete" para que el user borre la cancion de su lista
>>
>> el problema :
>>
>> necesito 2 parámetros para pasarle a la clase delete (id_usuario ,
>> id_cancion) ya que lo que tengo que eliminar es la tupla de la tabla
>> usuarios_canciones que tiene esa info.
>>
>> se me ocurrio tratando de genralizar un ejemplo que esta en webpy.org [0]
>> hacerlo de esta manera.
>>
>>
>> parte del template donde se listan las canciones:
>>
>>         #esto es uno por cada canción que listo
>>         <td><form method="post" action="del/$id/$s.id_s"> <-----vean que le
>> trato de pasar 2 parametros  id= id del user , s.id_s = id de la cancion
>>             <input type="submit" value="quitar"> </td>
>>
>> clase delete:
>>
>> class delete:
>>     def POST(self,id_u,id_s): <--- recibe los 2 id
>>         db.delete('UsuariosCanciones',where= "id_s = %d And id_u = %d"
>> %id_s  %id_u )
>>
>> la url la defini como urls = (...
>>                                          '/del/(+d)/(+d)', 'delete',
>>                                        ...
>>                                          )
>>
>> Googlee un buen rato ,pero no encontre un ejemplo parecido con 2 o mas
>> parámetros
>>
>>
>> [0]http://webpy.org/src/todo-list/0.3
>
> No manejo web.py, pero creo que sería más sencillo ya que vas a usar
> un formulario enviar los IDs por POST con el formulario poniendo dos
> campos hidden.
>
> <input type="hidden" name="user_id" value="5" />
> <input type="hidden" name="cancion_id" value="10" />
>
> Saludos,

Tal cual.  Y para obtener los valores pasados en una clase-vista de
web.py se hace adentro del método POST o GET de la misma:

user_data = web.input()

Sin embargo Emanuel, creo que para tu caso te conviene tener al
usuario autenticado y pasar solamente el ID de la canción a borrar.
Te paso un código parecido de un micrositio que hice con web.py,
reemplazá illustration por song, je:

"""

class IllustrationRemove:
    @registered
    def GET(self, illu_id):
        """
        remove illustration and illu items asociated from database
        """
        db.delete('illu_item', where="illustration = '%s'" % illu_id)
        db.delete('illustration', int(illu_id))
        raise web.seeother('/ilustraciones')


def registered(fn):
    """
    decorator for methods in session
    """
    def wrap_registered(*args):
        session = web.cookies()
        if not session:
            raise web.seeother('/ingresar')
        return fn(*args)
    return wrap_registered

"""

-- 
.. manuq ..



More information about the pyar mailing list