Dada una URL como la siguiente, ¿cómo puedo analizar el valor de los parámetros de consulta? Por ejemplo, en este caso quiero el valor de def
.
/abc?def='ghi'
Estoy usando Django en mi entorno; ¿Hay algún método en el request
objeto que pueda ayudarme?
Intenté usarlo, self.request.get('def')
pero no devuelve el valor ghi
como esperaba.
import urllib.parse as urlparse
parse_qs
le devolverá un objeto de lista. Necesitas obtener el primer elemento si quieres una cadenaurlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
contrario, la consulta devolverá str vacío.from urllib.parse import urlparse, parse_qs
yparse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
Me sorprende que esta solución no esté aquí ya. Utilizar:
Esto "obtendrá" la variable del diccionario "GET" y devolverá el valor 'variable_name' si existe, o un objeto None si no existe.
fuente
self
, pero estoy de acuerdo con el comentario anterior.fuente
para Python> 3.4
fuente
Hay una nueva biblioteca llamada furl. Creo que esta biblioteca es más pitónica para hacer álgebra de URL. Instalar:
Código:
fuente
Sé que esto es un poco tarde, pero como me encontré aquí hoy, pensé que podría ser una respuesta útil para otros.
Con parse_qsl (), "Los datos se devuelven como una lista de pares de nombre y valor".
fuente
La url a la que hace referencia es un tipo de consulta y veo que el objeto de solicitud admite un método llamado argumentos para obtener los argumentos de la consulta. También puede intentar
self.request.get('def')
directamente obtener su valor del objeto.fuente
Espero que esto ayude
fuente
El módulo urlparse proporciona todo lo que necesita:
urlparse.parse_qs ()
fuente
No hay necesidad de hacer nada de eso. Solo con
Tenga en cuenta que no estoy especificando el método (GET, POST, etc.). Esto está bien documentado y este es un ejemplo.
El hecho de que use plantillas de Django no significa que el controlador también sea procesado por Django
fuente
En Python puro:
fuente
fuente
Por cierto, estaba teniendo problemas para usar parse_qs () y obtener parámetros de valores vacíos y aprendí que debe pasar un segundo parámetro opcional 'keep_blank_values' para devolver una lista de los parámetros en una cadena de consulta que no contiene valores. Su valor predeterminado es falso. Algunas API mal escritas requieren la presencia de parámetros, incluso si no contienen valores
fuente
Hay una bonita biblioteca w3lib.url
fuente
Este es simple. Los parámetros variables contendrán un diccionario de todos los parámetros.
fuente
Veo que no hay una respuesta para los usuarios de Tornado:
Este método debe funcionar dentro de un controlador derivado de:
Ninguna es la respuesta que devolverá este método cuando no se pueda encontrar la clave solicitada. Esto le ahorra un poco de manejo de excepciones.
fuente