[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