جنگو چیست؟
جنگو (جَنگو) یک فریمورک تحت وب رایگان و متن بازopen source است که با زبان پایتون نوشته شدهاست. یک فریم ورک تحت وب، دارای مجموعهای از ابزارهاست که به شما کمک میکنند تا یک وب سایت را سریعتر و راحتتر توسعه دهید.
هنگامی که در حال ساخت یک وب سایت هستید، شما همیشه به مجموعه ای از اجزای مشابه نیاز دارید. به شرح زیر: یک روش برای کنترل کردن احراز هویت کاربر (ثبت نام ، ورود به حساب کاربری ، خروج از حساب کاربری) ، یک پنل مدیریت برای وب سایت خود ، فرم ها ، روشی برای آپلود فایل ها و غیره.
خوشبختانه خیلی وقت پیش، افرادی متوجه این موضوع شدند که هنگام ساختن یک سایت جدید، توسعه دهندگان وب با مشکلات مشابهی روبرو میشوند، بنابراین آنها تیمی را تشکیل دادند که به راحتی اجزای کار را در اختیار شما قرار میدهد که شما بتوانید به راحتی از آنها استفاده کنید ودر نهایت فریم ورکها را ساختند (جنگو یکی از آن هاست).
فریم ورکها به این دلیل به وجود آمده اند که دیگر نیازی نباشد شما از اول چرخ را بسازید و به شما کمک می کند تا به راحتی سایت خود را بسازید.
چرا شما به یک فریم ورک نیاز دارید؟
برای درک بهتر چگونگی عملکرد جنگو لازم است نگاه دقیقتری به سرورها بیندازیم. اولین چیزی که سرور نیاز دارد بداند این است که شما میخواهید سرور برای شما یک وب پیج را ارائه کند.
حالا یک صندوق پست (port) را تصور کنید که منتظر دریافت نامهها (requests) است. این کار توسط وب سرور انجام خواهد گرفت. وب سرور نامه را خوانده و پاسخ مربوطه را به وب پیج می فرستد. اما هنگامی که شما میخواهید چیزی را ارسال کنید، به محتوا احتیاج دارید. و جنگو همانی است که به شما برای ایجاد محتوا کمک میکند.
زمانی که فردی از سرور شما یک وبسایت را درخواست میکند، چه اتفاقی میافتد؟
هنگامی که یک درخواست به وب سرور می آید، به جنگو انتقال داده می شود و جنگو تلاش میکند بفهمد که دقیقاً چه چیزی درخواست شده است. در ابتدا آدرس وب پیج را میگیرد و سعی میکند تشخیص دهد چه کاری باید انجام دهد. این بخش توسط urlresolver جنگو انجام میگیرد (آدرس وبسایت URL یا Uniform Resource Locator نامیده میشود به این دلیل urlresolver یا تجزیه کننده URL نام با مسمایی است). خیلی سیستم هوشمندی نیست فقط یک لیست از الگوها را میگیرد و سعی میکند درخواست را با یکی از این الگوها مطابقت دهد. جنگو الگوها را از بالا به پایین بررسی میکند و اگر الگویی مشابه درخواست پیدا کرد، آن درخواست را به تابع مرتبط با آن الگو (که view نامیده میشود) ارسال میکند.
یک پستچی را با یک نامه تصور کنید. او در خیابان راه میرود و پلاک هر خانه را با پلاک نوشته شده روی نامه مقایسه میکند. اگر مطابقت داشته باشد، نامه را در آنجا می گذارد. این روش کار urlresolver است!
در تابع view، تمام چیزهای جالب اتفاق میافتد: ما میتوانیم به یک پایگاه داده نگاه کنیم تا اطلاعاتی را جستجو کنیم. شاید کاربر درخواست تغییر در داده را داشته باشد؟ مانند درخواستهایی که در یک نامه فرستاده میشوند: "لطفا شرح شغل من را تغییر دهید". تابع view میتواند بررسی کند که آیا شما مجاز به انجام این کار هستید، و سپس شرح شغل را برای شما به روز رسانی کرده و یک پیام را ارسال کند: "انجام شد!" سپس تابع view یک پاسخ ایجاد میکند و جنگو میتواند آن را به مرورگر وب کاربر ارسال کند.
توضحیحات بالا کمی ساده شدهاند اما شما نیازی ندارید که همه ریزهکاریهای فنی را بدانید. یک درک کلی از فرآیند کافی است.
پس به جای آن که بیش از این سراغ جزییات برویم میخواهیم با جنگو چیزی بسازیم و بخشهای مهم آن را در این مسیر یاد بگیریم!