Dado um URL como o seguinte, como posso analisar o valor dos parâmetros de consulta? Por exemplo, neste caso, eu quero o valor de def
.
/abc?def='ghi'
Estou usando o Django no meu ambiente; existe um método no request
objeto que poderia me ajudar?
Eu tentei usar, self.request.get('def')
mas ele não está retornando o valor ghi
como eu esperava.
import urllib.parse as urlparse
parse_qs
você retornará um objeto de lista. Você precisa obter o primeiro elemento que se você quiser uma stringurlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
caso contrário, a consulta retornará str vazio.from urllib.parse import urlparse, parse_qs
eparse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
Estou chocado que esta solução ainda não esteja aqui. Usar:
Isso "obterá" a variável do dicionário "GET" e retornará o valor 'variable_name', se existir, ou um objeto None, se não existir.
fonte
self
, mas concordo com o comentário acima.fonte
para Python> 3.4
fonte
Existe uma nova biblioteca chamada furl. Acho que esta biblioteca é mais pitônica para fazer álgebra de URL. Para instalar:
Código:
fonte
Eu sei que é um pouco tarde, mas desde que me encontrei aqui hoje, pensei que essa poderia ser uma resposta útil para os outros.
Com parse_qsl (), "Os dados são retornados como uma lista de nome, pares de valores".
fonte
O URL que você está se referindo é um tipo de consulta e vejo que o objeto de solicitação suporta um método chamado argumentos para obter os argumentos da consulta. Você também pode querer tentar
self.request.get('def')
diretamente obter seu valor do objeto.fonte
Espero que isto ajude
fonte
O módulo urlparse fornece tudo o que você precisa:
urlparse.parse_qs ()
fonte
Não é necessário fazer nada disso. Somente com
Observe que não estou especificando o método (GET, POST, etc). Isso está bem documentado e este é um exemplo
O fato de você usar modelos do Django não significa que o manipulador também seja processado pelo Django
fonte
Em Python puro:
fonte
fonte
Btw, eu estava tendo problemas usando parse_qs () e obtendo parâmetros de valor vazio e aprendi que é preciso passar um segundo parâmetro opcional 'keep_blank_values' para retornar uma lista dos parâmetros em uma string de consulta que não contém valores. O padrão é false. Algumas APIs escritas ruins exigem que os parâmetros estejam presentes, mesmo que não contenham valores
fonte
Existe uma boa biblioteca w3lib.url
fonte
Este é simples. Os parâmetros variáveis conterão um dicionário de todos os parâmetros.
fonte
Vejo que não há uma resposta para os usuários do Tornado:
Este método deve funcionar dentro de um manipulador derivado de:
Nenhuma é a resposta que esse método retornará quando a chave solicitada não puder ser encontrada. Isso economiza um tratamento de exceção.
fonte