Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Problema al recoger variables de una url usando Bottle framework

Estas en el tema de Problema al recoger variables de una url usando Bottle framework en el foro de Python en Foros del Web. Estoy intentando recoger las variables de la url que le paso en la llamada por post a bottle pero por algún motivo solo me devuelve ...
  #1 (permalink)  
Antiguo 07/05/2014, 03:08
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 12 años, 1 mes
Puntos: 2
Problema al recoger variables de una url usando Bottle framework

Estoy intentando recoger las variables de la url que le paso en la llamada por post a bottle pero por algún motivo solo me devuelve la primera variable. Cualquier variable que venga despues de
Código:
&
no la recoge.
La llamada json-rpc desde un terminal es la siguiente:
Código:
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "select", "params": {"bd":"escuela", "tabla": "educadores"}, "id": 3}'  http://localhost:8081/rpc/crud/escuela?edad=25&rol=educador
Y el código del archivo que inicia el servidor bottle es:

Código:
# -*- encoding: utf-8 -*-
import bottle
from bottle import request
import os
import inspect

app = bottle.Bottle() 

@app.post('/rpc/<lib>/')
@app.post('/rpc/<lib>/<uriParams:path>')
def rpc_test(lib, uriParams=''):

        dict_=dict(request.query)
        os.system("echo La url es: "+request.url)        
        for d in dict_:     
            os.system("echo dict da: "+str(dict_[d]))    
    
        resp = {"jsonrpc": "2.0"}

        return resp

bottle.run(app, host='localhost', port=8081, reloader=True)
Como se puede ver, en la url que le paso se encuentran dos variables
Código:
http://localhost:8081/rpc/crud/escuela?edad=25&rol=educador 
pero por alguna razón cuando se ejecuta request.url dice que la url acaba antes del
Código:
&
quedando
Código:
La url es: http://localhost:8081/rpc/crud/escuela?edad=25 
  #2 (permalink)  
Antiguo 07/05/2014, 16:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 18
Respuesta: Problema al recoger variables de una url usando Bottle framework

& es un operador en bash.

Prueba en un terminal:
Código BASH:
Ver original
  1. echo http://localhost:8081/rpc/crud/escuela?edad=25&rol=educador
Y verás que tampoco se imprime.
Puedes escapar el ampersand.
Código BASH:
Ver original
  1. echo http://localhost:8081/rpc/crud/escuela?edad=25\&rol=educador

O en tu código python:
Código Python:
Ver original
  1. url = 'http://localhost:8081/rpc/crud/escuela?edad=25&rol=educador'
  2. x = url.replace('&', '\&')
  3. os.system('echo {}'.format(x))

Saludos.
  #3 (permalink)  
Antiguo 08/05/2014, 02:22
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Problema al recoger variables de una url usando Bottle framework

He probado tu solución y es casi correcta.
Como bien dices
Cita:
& es un operador en bash.
y había que escaparlo.
Lo único es que escaparlo con
Código BASH:
Ver original
  1. \&
no funcionaba, pero
Código BASH:
Ver original
  1. \&\
si que lo ha echo.
Muchísimas gracias por tu respuesta.

Etiquetas: url, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:05.