Étant donné une URL comme celle-ci, comment puis-je analyser la valeur des paramètres de requête? Par exemple, dans ce cas, je veux la valeur de def
.
/abc?def='ghi'
J'utilise Django dans mon environnement; y a-t-il une méthode sur l' request
objet qui pourrait m'aider?
J'ai essayé de l'utiliser self.request.get('def')
mais cela ne renvoie pas la valeur ghi
que j'espérais.
import urllib.parse as urlparse
parse_qs
vous renverra un objet de liste. Vous devez en obtenir le premier élément si vous voulez une chaîneurlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
sinon la requête renverra str vide.from urllib.parse import urlparse, parse_qs
etparse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
Je suis choqué que cette solution ne soit pas déjà disponible. Utilisation:
Cela "récupérera" la variable du dictionnaire "GET", et retournera la valeur 'nom_variable' si elle existe, ou un objet None si elle n'existe pas.
la source
self
, mais je suis d'accord avec le commentaire ci-dessus.la source
pour Python> 3.4
la source
Il existe une nouvelle bibliothèque appelée furl. Je trouve que cette bibliothèque est la plus pythonique pour faire de l'algèbre url. À installer:
Code:
la source
Je sais que c'est un peu tard, mais depuis que je me suis retrouvé ici aujourd'hui, j'ai pensé que cela pourrait être une réponse utile pour les autres.
Avec parse_qsl (), "Les données sont renvoyées sous forme de liste de paires de noms et de valeurs."
la source
L'url que vous faites référence est un type de requête et je vois que l'objet de requête prend en charge une méthode appelée arguments pour obtenir les arguments de requête. Vous pouvez également essayer
self.request.get('def')
d'obtenir directement votre valeur à partir de l'objet.la source
J'espère que cela t'aides
la source
Le module urlparse fournit tout ce dont vous avez besoin:
urlparse.parse_qs ()
la source
Il n'y a rien de cela à faire. Seulement avec
Notez que je ne spécifie pas la méthode (GET, POST, etc.). Ceci est bien documenté et ceci est un exemple
Le fait que vous utilisiez des modèles Django ne signifie pas que le gestionnaire est également traité par Django
la source
En pur Python:
la source
la source
Btw, j'avais des problèmes en utilisant parse_qs () et en obtenant des paramètres de valeur vides et j'ai appris que vous devez passer un deuxième paramètre facultatif 'keep_blank_values' pour renvoyer une liste des paramètres dans une chaîne de requête qui ne contient aucune valeur. La valeur par défaut est false. Certaines API écrites de merde exigent que des paramètres soient présents même s'ils ne contiennent aucune valeur
la source
Il y a une belle bibliothèque w3lib.url
la source
Celui-ci est simple. Les paramètres variables contiendront un dictionnaire de tous les paramètres.
la source
Je vois qu'il n'y a pas de réponse pour les utilisateurs de Tornado:
Cette méthode doit fonctionner dans un gestionnaire dérivé de:
Aucune est la réponse que cette méthode renverra lorsque la clé demandée est introuvable. Cela vous évite de gérer les exceptions.
la source