Dengan URL seperti berikut ini, bagaimana saya bisa menguraikan nilai parameter kueri? Misalnya, dalam hal ini saya ingin nilai def
.
/abc?def='ghi'
Saya menggunakan Django di lingkungan saya; apakah ada metode pada request
objek yang dapat membantu saya?
Saya mencoba menggunakan self.request.get('def')
tetapi tidak mengembalikan nilai ghi
seperti yang saya harapkan.
import urllib.parse as urlparse
parse_qs
akan mengembalikan Anda objek daftar. Anda perlu mendapatkan elemen pertama dari itu jika Anda ingin stringurlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
jika tidak, kueri akan mengembalikan str kosong.from urllib.parse import urlparse, parse_qs
danparse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
Saya terkejut solusi ini belum ada di sini. Menggunakan:
Ini akan "mendapatkan" variabel dari kamus "GET", dan mengembalikan nilai 'variabel_name' jika ada, atau objek Tidak Ada jika tidak ada.
sumber
self
, tetapi saya setuju dengan komentar di atas.sumber
untuk Python> 3.4
sumber
Ada perpustakaan baru bernama furl. Saya menemukan perpustakaan ini paling pythonic untuk melakukan aljabar url. Untuk memasang:
Kode:
sumber
Saya tahu ini agak terlambat tetapi karena saya mendapati diri saya di sini hari ini, saya pikir ini mungkin jawaban yang berguna untuk orang lain.
Dengan parse_qsl (), "Data dikembalikan sebagai daftar nama, pasangan nilai."
sumber
Url yang Anda maksudkan adalah tipe kueri dan saya melihat bahwa objek permintaan mendukung metode yang disebut argumen untuk mendapatkan argumen kueri. Anda mungkin juga ingin mencoba
self.request.get('def')
secara langsung untuk mendapatkan nilai Anda dari objek ..sumber
Semoga ini membantu
sumber
Modul urlparse menyediakan semua yang Anda butuhkan:
urlparse.parse_qs ()
sumber
Tidak perlu melakukan semua itu. Hanya dengan
Perhatikan bahwa saya tidak menentukan metode (GET, POST, dll). Ini didokumentasikan dengan baik dan ini adalah contoh
Fakta bahwa Anda menggunakan template Django tidak berarti handler diproses oleh Django juga
sumber
Dengan Python murni:
sumber
sumber
Btw, saya mengalami masalah menggunakan parse_qs () dan mendapatkan parameter nilai kosong dan mengetahui bahwa Anda harus melewati parameter opsional kedua 'keep_blank_values' untuk mengembalikan daftar parameter dalam string kueri yang tidak mengandung nilai. Ini default ke false. Beberapa API tertulis jelek memerlukan parameter untuk hadir bahkan jika mereka tidak mengandung nilai
sumber
Ada perpustakaan yang bagus w3lib.url
sumber
Yang ini sederhana. Parameter variabel akan berisi kamus semua parameter.
sumber
Saya melihat tidak ada jawaban untuk pengguna Tornado:
Metode ini harus bekerja di dalam penangan yang berasal dari:
Tidak ada jawaban yang metode ini akan kembali ketika kunci yang diminta tidak dapat ditemukan. Ini menghemat beberapa penanganan pengecualian.
sumber