Wie kann ich bei einer URL wie der folgenden den Wert der Abfrageparameter analysieren? In diesem Fall möchte ich zum Beispiel den Wert von def
.
/abc?def='ghi'
Ich benutze Django in meiner Umgebung. Gibt es eine Methode für das request
Objekt, die mir helfen könnte?
Ich habe versucht self.request.get('def')
, es zu verwenden, aber es gibt nicht den Wert zurück, den ghi
ich gehofft hatte.
import urllib.parse as urlparse
parse_qs
Sie ein Listenobjekt zurückgeben. Sie müssen das erste Element davon bekommen, wenn Sie einen String wollenurlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
Andernfalls gibt die Abfrage eine leere Str zurück.from urllib.parse import urlparse, parse_qs
undparse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
Ich bin schockiert, dass diese Lösung hier noch nicht verfügbar ist. Verwenden:
Dadurch wird die Variable aus dem Wörterbuch "GET" "abgerufen" und der Wert "Variablenname" zurückgegeben, falls vorhanden, oder ein Objekt "Keine", wenn es nicht vorhanden ist.
quelle
self
, aber ich stimme dem obigen Kommentar zu.quelle
für Python> 3.4
quelle
Es gibt eine neue Bibliothek namens furl. Ich finde diese Bibliothek am pythonischsten für URL-Algebra. Installieren:
Code:
quelle
Ich weiß, dass dies etwas spät ist, aber da ich mich heute hier befand, dachte ich, dass dies eine nützliche Antwort für andere sein könnte.
Mit parse_qsl () werden "Daten als Liste von Name-Wert-Paaren zurückgegeben."
quelle
Die URL, auf die Sie verweisen, ist ein Abfragetyp, und ich sehe, dass das Anforderungsobjekt eine Methode namens Argumente unterstützt , um die Abfrageargumente abzurufen. Möglicherweise möchten Sie auch
self.request.get('def')
direkt versuchen , Ihren Wert aus dem Objekt zu erhalten.quelle
Hoffe das hilft
quelle
Das urlparse-Modul bietet alles, was Sie brauchen:
urlparse.parse_qs ()
quelle
Das muss man nicht tun. Nur mit
Beachten Sie, dass ich die Methode nicht spezifiziere (GET, POST usw.). Dies ist gut dokumentiert und dies ist ein Beispiel
Die Tatsache, dass Sie Django-Vorlagen verwenden, bedeutet nicht, dass der Handler auch von Django verarbeitet wird
quelle
In reinem Python:
quelle
quelle
Übrigens hatte ich Probleme bei der Verwendung von parse_qs () und beim Abrufen leerer Werteparameter und erfuhr, dass Sie einen zweiten optionalen Parameter 'keep_blank_values' übergeben müssen, um eine Liste der Parameter in einer Abfragezeichenfolge zurückzugeben, die keine Werte enthält. Der Standardwert ist false. Einige beschissene geschriebene APIs erfordern, dass Parameter vorhanden sind, auch wenn sie keine Werte enthalten
quelle
Es gibt eine schöne Bibliothek w3lib.url
quelle
Dieser ist einfach. Die variablen Parameter enthalten ein Wörterbuch aller Parameter.
quelle
Ich sehe, dass es für Benutzer von Tornado keine Antwort gibt:
Diese Methode muss in einem Handler funktionieren, der abgeleitet ist von:
Keine ist die Antwort, die diese Methode zurückgibt, wenn der angeforderte Schlüssel nicht gefunden werden kann. Dies erspart Ihnen einige Ausnahmebehandlungen.
quelle