Problema no tratamento da query na URL

33 visualizações
Pular para a primeira mensagem não lida

Tomas Schertel

não lida,
25 de abr. de 2013, 16:34:1425/04/2013
para python...@googlegroups.com
Pessoal,

Estou desenvolvendo uma aplicação usando web.py e preciso tratar uma query na URL.
Para estudar o que fazer, estou usando esta URL:

http://localhost:8080/teste/?idade=20&modelo=Scort&marca=Ford&status=ATIVO&gerente=tomas%20schertel

Eu consigo pegar os valores usando uma combinação de urlparse.parse_qs e web.ctx.query do web.py, dessa maneira:

parse_qs(web.ctx.query)['?idade'][0]

Isso me dá o valor "20" da chave "?idade".
Mas nem sempre minhas chaves vão estar na mesma ordem e por isso "?idade" pode virar "idade"
Existe uma maneira de tratar esse possível "?" das chaves da URL?

Em outro lugar da minha aplicação eu estou usando:

str(urlparse.parse_qs(web.ctx.query).values()[0][0])
str(urlparse.parse_qs(web.ctx.query).values()[1][0])
str(urlparse.parse_qs(web.ctx.query).values()[2][0])

Mas nesse caso eu tenho certeza que a ordem é sempre a mesma.

Obrigado.

Alex

não lida,
25 de abr. de 2013, 17:16:1525/04/2013
para python...@googlegroups.com
Por que você não tenta usar o objeto: web.input

i = web.input(name=None)

Dá até para fazer isso:

def GET(self, **kwargs):

kwargs # dados da url

Tem bastante tempo que não uso esse framework mas ele trata esse casos com eficiência, não precisa ficar refazendo tudo.
Leia a doumentação!

http://webpy.org/docs/0.3/tutorial#urlhandling

Leandro - ProfessionalIT - Soluções em Tecnologia da Informação.

não lida,
25 de abr. de 2013, 20:28:2525/04/2013
para python...@googlegroups.com
Thomas,

    Tenta assim querido, criei um code.py e coloquei isso dentro.

import web

# Meu camarda !, acessei assim oh:

urls = (
    '/(\S*)', 'index'
)

class index:
    def GET(self, param):
        cleaned_data = web.ctx.query.replace('?','')
        my_list = cleaned_data.split('&')
        my_dict = dict((l.split('=') for l in my_list))
        # ai em cima tu já tens o teu dicionario montadinho na beleza !
        return "OK"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()


Atenciosamente,
Leandro Severino - Professional in Information Technology.
MSNlea...@professionalit.com.br  |  GTalklsev...@gmail.com | Skype: leandro-professionalit
Sitehttp://www.professionalit.com.br |  Bloghttp://blog.professionalit.com.br | Twitter: http://twitter.com/professionalit
Mobile: (51) 9390.3511 (Claro) e (51) 8272.5841 (TIM)

 




2013/4/25 Tomas Schertel <tsch...@gmail.com>
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Tomas Schertel

não lida,
25 de abr. de 2013, 21:28:3125/04/2013
para python...@googlegroups.com
@Alex,

Essa URL não vem de um form.

@Leandro,

Vou testar esse teu código.

Obrigado a todos.

Alex Sandro

não lida,
25 de abr. de 2013, 21:53:1225/04/2013
para python...@googlegroups.com
Você leu a documentação ?
Se é do seu interesse reescrever tudo de novo não vejo problemas.

Dê uma olhada aqui: http://webpy.org/cookbook/input

Trecho:

The web.input() method returns a web.storage object (a dictionary-like object) that contains the variables from the url (in a GET) or in the http header (in a POST). For example, if you go to the page http://example.com/test?id=10, on the Python backend you'll want to extract that the id=10. Using web.input(), this becomes trivial:

Ultima tentativa de ajudar.


Você recebeu esta mensagem porque está inscrito em um tópico do grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/python-brasil/9P-17URj1dk/unsubscribe?hl=pt-BR.
Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Leandro - ProfessionalIT - Soluções em Tecnologia da Informação.

não lida,
25 de abr. de 2013, 22:53:1925/04/2013
para python...@googlegroups.com
Thomas, 

   O Alex tem razão, o web.input() vai pegar os parametros via GET também, não somente via POST, então se tu colocar isto:

   my_input = web.input()
   Depois tu consegue acessar de boa assim:
   my_input.get('status')
   
   Boa Alex, realmente eu não me lembrava que ele pegava via GET também.

   Cara, so fã desse web.py oh coisinha boa de programar com ele.

   

Atenciosamente,
Leandro Severino - Professional in Information Technology.
MSNlea...@professionalit.com.br  |  GTalklsev...@gmail.com | Skype: leandro-professionalit
Sitehttp://www.professionalit.com.br |  Bloghttp://blog.professionalit.com.br | Twitter: http://twitter.com/professionalit
Mobile: (51) 9390.3511 (Claro) e (51) 8272.5841 (TIM)

 




2013/4/25 Alex Sandro <genio...@gmail.com>

Alex Sandro

não lida,
25 de abr. de 2013, 23:05:2325/04/2013
para python...@googlegroups.com
Eu fiz um "site"(mais um protótipo) usando web.py: http://dev.nanuven.com/
Responder a todos
Responder ao autor
Encaminhar
A mensagem foi excluída
0 nova mensagem