Biorąc pod uwagę adres URL podobny do poniższego, jak mogę przeanalizować wartość parametrów zapytania? Na przykład w tym przypadku chcę mieć wartość def
.
/abc?def='ghi'
Używam Django w moim środowisku; czy na request
obiekcie jest metoda, która mogłaby mi pomóc?
Próbowałem użyć, self.request.get('def')
ale nie zwraca wartości, ghi
jak się spodziewałem.
import urllib.parse as urlparse
parse_qs
zwróci ci obiekt listy. Musisz zdobyć pierwszy element, jeśli chcesz mieć stringurlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
w przeciwnym razie zapytanie zwróci puste str.from urllib.parse import urlparse, parse_qs
iparse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
Jestem zszokowany, że tego rozwiązania już nie ma. Posługiwać się:
To „pobierze” zmienną ze słownika „GET” i zwróci wartość „nazwa_zmiennej”, jeśli istnieje, lub obiekt None, jeśli nie istnieje.
źródło
self
, ale zgadzam się z powyższym komentarzem.źródło
dla Pythona> 3.4
źródło
Jest nowa biblioteka o nazwie furl. Uważam, że ta biblioteka jest najbardziej pythonowa do wykonywania algebry adresów URL. Żeby zainstalować:
Kod:
źródło
Wiem, że to trochę za późno, ale ponieważ znalazłem się tutaj dzisiaj, pomyślałem, że może to być przydatna odpowiedź dla innych.
Z parse_qsl (), "Dane są zwracane jako lista par nazw i wartości."
źródło
Adres URL, do którego się odwołujesz, jest typem zapytania i widzę, że obiekt żądania obsługuje metodę o nazwie arguments w celu pobrania argumentów zapytania. Możesz także spróbować
self.request.get('def')
bezpośrednio uzyskać wartość z obiektu.źródło
Mam nadzieję że to pomoże
źródło
Moduł urlparse zapewnia wszystko, czego potrzebujesz:
urlparse.parse_qs ()
źródło
Nie ma takiej potrzeby. Tylko z
Zwróć uwagę, że nie określam metody (GET, POST itp.). Jest to dobrze udokumentowane i to jest przykład
Fakt, że używasz szablonów Django, nie oznacza, że program obsługi jest również przetwarzany przez Django
źródło
W czystym Pythonie:
źródło
źródło
Przy okazji, miałem problemy z używaniem parse_qs () i uzyskiwaniem pustych parametrów wartości i dowiedziałem się, że musisz przekazać drugi opcjonalny parametr „keep_blank_values”, aby zwrócić listę parametrów w ciągu zapytania, które nie zawierają żadnych wartości. Domyślnie jest to fałsz. Niektóre słabo napisane interfejsy API wymagają obecności parametrów, nawet jeśli nie zawierają one wartości
źródło
Jest fajna biblioteka w3lib.url
źródło
Ten jest prosty. Zmienne parametry będą zawierały słownik wszystkich parametrów.
źródło
Widzę, że nie ma odpowiedzi dla użytkowników Tornado:
Ta metoda musi działać wewnątrz procedury obsługi, która pochodzi z:
Brak jest odpowiedzią, którą ta metoda zwróci, gdy nie można znaleźć żądanego klucza. Oszczędza to obsługi wyjątków.
źródło