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

در این مطلب می خواهیم در مورد سه متد ()quote و ()unquote و ()urlencode صحبت کنیم. متد ()quote زمانی استفاده می شود که درون URL کارکترهای ویژه مانند حروف فارسی، فضای خالی و غیره وجود داشته باشند که غیر معتبر هستند و بخواهیم این کاراکترها را اصطلاحا Escape کنیم.واژه Escape به معنی رها شدن، گریختن است.

کاربرد متد ()unquote عکس متد ()quote است به این معنی که آدرس URL داریم که کاراکترهای غیر معتبر مانند حروف فارسی در آن وجود ندارند ولی می خواهیم این URL را به اصل خود، یعنی با حروف فارسی برگردانیم. نمونه خوبی از یک آدرس URL که کاراکترهای خاص آن Escape شده اند، در زیر نشان داده شده است.

در کدهای شکل زیر ابتدا توسط متد ()unquote یک آدرس URL که Escape شده و حاوی حروف فارسی است را به همان حالتی بر می گردانیم که بتوانیم حروف فارسی را نشان دهیم. سپس نتیجه کار در متغیر url_unquote ذخیره می کنیم.در نهایت محتوای این متغیر توسط متد ()quote به همان حالت اولیه برگشت داده می شود. توجه کنید این دو متد در ماژول urllib.parse قرار دارند.

حال می خواهیم توسط متد ()urlencode یک رشته کوئری ایجاد کنیم ولی پیش از آن باید داده های رشته کوئری، یعنی جفت های کلید و مقدار را به صورت یک دیکشنری تعریف کنیم. در کد شکل زیر متغیر data از نوع دیکشنری است که هر عنصر آن یک جفت کلید مقدار است. سپس این متغیر به متد ()urlencode فرستاده می شود که نتیجه ان رشته کوئری است و اگر دقت کنید می بینید که ابتدای آن ? وجود دارد.

دانلود سورس کامل این مطلب Python urlencode method