جنگو چیست؟
جنگو یک فریمورک پایتون است که ساخت وب سایت با استفاده از پایتون را آسان تر می کند.
جنگو از مسائل دشوار مراقبت می کند تا بتوانید روی ساخت برنامه های وب خود تمرکز کنید.
جنگو بر قابلیت استفاده مجدد از مؤلفهها که به آن DRY (مخفف Don’t Repeat Yourself به معنی خودت تکرار نکن) نیز گفته میشود، تأکید میکند و دارای ویژگیهای آماده استفاده مانند سیستم ورود، اتصال پایگاه داده و عملیات CRUD (ایجاد، حذف، بهروزرسانی، خواندن) است.
جنگو به ویژه برای وب سایت های مبتنی بر پایگاه داده مفید است.
جنگو چگونه کار می کند؟
جنگو از الگوی طراحی MVT (مخفف Model View Template به معنی مدل نمایش قالب) پیروی می کند.
- Model – دادههایی که میخواهید ارائه کنید، معمولاً دادههایی از یک پایگاه داده است.
- View – یک کنترل کننده درخواست که الگو و محتوای مربوطه را بر اساس درخواست کاربر برمی گرداند.
- Template – یک فایل متنی (مانند یک فایل HTML) حاوی طرح بندی صفحه وب، با منطق نحوه نمایش داده ها.
Model
مدل، داده ها را از پایگاه داده ارائه می دهد.
در جنگو، دادهها بهعنوان یک نگاشت رابطهای شیء (ORM مخفف Object Relational Mapping) ارائه میشوند، این تکنیکی است که برای آسانتر کردن کار با پایگاههای داده طراحی شده است.
رایج ترین راه برای استخراج داده ها از پایگاه داده، SQL است. یکی از مشکلات SQL این است که شما باید درک بسیار خوبی از ساختار پایگاه داده داشته باشید تا بتوانید با آن کار کنید.
جنگو با ORM، بدون نیاز به نوشتن دستورات SQL پیچیده، ارتباط با پایگاه داده را آسان تر می کند.
مدل ها معمولا در فایلی به نام models.py
قرار دارند.
View
View یک تابع یا متد است که درخواستهای http را بهعنوان آرگومان میگیرد، مدل(های) مربوطه را وارد میکند و متوجه میشود که چه دادههایی را به قالب (Template) ارسال کند و نتیجه نهایی را برمیگرداند.
تابع های View معمولاً در فایلی به نام views.py قرار دارند.
Template
Template یا قالب فایلی است که در آن نحوه نمایش نتیجه به کاربر را توضیح می دهید.
Template ها اغلب فایلهای html هستند، با کد HTML که طرحبندی یک صفحه وب را توصیف میکند، اما میتواند در فرمت های دیگری نیز باشد تا نتایج دیگر را ارائه دهد، اما ما روی فایلهای html تمرکز خواهیم کرد.
جنگو از HTML استاندارد برای توصیف طرحبندی استفاده میکند، اما از تگهای جنگو برای اضافه کردن منطق استفاده میکند:
My Homepage
My name is {{ firstname }}.
قالب های یک برنامه در پوشه ای به نام templates قرار دارد.
URLs
جنگو همچنین راهی برای پیمایش در صفحات مختلف یک وب سایت فراهم می کند.
وقتی کاربر یک URL را درخواست می کند، جنگو تصمیم می گیرد که آن را به کدام View ارسال کند.
این کار در فایلی به نام urls.py
انجام می شود.
جریان از چه قرار است؟
- جنگو URL را دریافت می کند، فایل
urls.py
را بررسی می کند و View مطابق با URL را فراخوانی می کند. - View فراخوانی شده که واقع در
views.py
است، مدل های مربوطه را بررسی می کند. - مدل ها از فایل
models.py
وارد می شوند. - سپس View داده ها را به یک Template مشخص در پوشه
Template
ارسال می کند. - این Template حاوی تگهای HTML و جنگو است و با دادهها، محتوای نهایی HTML را به مرورگر برمیگرداند.
تاریخچه جنگو
جنگو توسط دفتر روزنامه Lawrence Journal-World در سال 2003 اختراع شد تا نیاز های ضروری روزنامه را برآورده کند و در عین حال خواسته های توسعه دهندگان وب با تجربه را برآورده کند.
انتشار اولیه برای عموم در جولای 2005 بود.
آخرین نسخه جنگو 4.0.3 (مارس 2022) است.