پیش از آنکه در مورد متد ()prase_qs و کاربرد آن برای بدست آوردن رشته کوئری (Query String) از درون آدرس URL صحبت کنیم، لازم است تا در مورد خود رشته کوئری صحبت شود. زمانی که بخواهیم از طریق آدرس URL مقدارهایی را تعیین و آن را به وب سایت و قاعدتا به وب سرور بفرستیم، از رشته کوئری استفاده می کنیم. رشته کوئری می تواند شامل یک یا چندین جفت کلید/مقدار به صورت key=value باشند که در انتهای ادرس URL و پس از علامت ? قرار می گیرند. اگر چندین جفت key=value در رشته کوئری باشند، هر کدام از این جفت ها توسط کاراکتر & از هم جدا می شوند.

در آدرس های بالا دو کلید به نام posts و title وجود دارند که برای هر کدام مقداری تعیین شده است. توجه کنید که اولین کلید با علامت ? از آدرس جدا شده است. گاهی اوقات از واژه پارامتر به جای کلید درمنابع استفاده می شود. چیزی که مهم است اینکه، به طور مثال مقدارهایی که از طریق این دو کلید (یا پارامتر) درون رشته کوئری تعیین شده، درون یک رشته کوئری SQL استفاده می شود تا به سرور (پایگاه داده) فرستاده شود و سپس نتیجه جستجو بر اساس مقدار این پارامترها از پایگاه داده برگشت داده شود.

فرض کنید رشته کوئری شامل دو پارامتر name و family در آدرس http://example.com?name=amir&family=ahmadinami دارید و می خواهید از آدرس، مقدار هر کدام از کلیدها (پارامترهای) رشته کوئری را بدست آورید. در پایتون باید ازترکیب دو متد ()urlparse و ()parse_qs به صورت شکل زیر استفاده کنید.

همانطور که می بینید متغیر query_string به صورت نوع دیکشنری است که کلیدهای دیکشنری نام کلیدها و مقدار هر کلید دیکشنری به صورت لیست پایتونی است. در شکل زیر مقدار کلید (پارامتر) family در آدرس URL به صورت ahmadi+nami است. اگر دقیت کنید، پس از تجزیه رشته کوئری، این مقدار به ahmadi nami تبدیل شده است، به عبارتی فضای خالی (Space) جایگزین کاراکتر + شده است.

در کد های شکل زیر مقدار هر کلید را استخراج و سپس آنها را با هم ترکیب کرده ایم تا در نهایت نام کامل بدست آید. توجه کنید اندیس صفر در بعد هر کدام از نام کلیدها، به این خاطر است که لیست مقدار هر کدام از کلیدها در دیکشنری دارای یک عنصر هستند. در نهایت بررسی می شود که آیا مقدار  متغیر fullname درون لیست users وجود دارد یا نه؟ توجه کنید ما فرض کرده ایم لیست users همان پایگاه داده و کد زیر همان نقش SQL را دارد.

دانلود سورس این مطلب Parse Query Sring with parse_qs