ماهیت جنگو


جنگو، فریم‌ورک ویا همان چارجوبی می‌باشد که ایجاد یک وب‌سایت را با استفاده از بستر پایتون آسان­تر می‌کند. همچنین جنگو بر قابلیت استفاده مجدد از مؤلفه‌ها، تأکید دارد که در اصطلاح به آن DRY گفته می‌شود که مخفف اصطلاح خودت تکرار نکن - Don't Repeat Yourself می­‌باشد و دارای ویژگی‌های آماده برای استفاده همانند سیستم احراز هویت و اعتبارسنجی کاربران، اتصال پایگاه داده و عملیات CRUD معرف عملیات ایجاد، خواندن، ویرایش و حذف (Create Read Update Delete) و ... است.

همچنین جنگو از الگوی طراحی MVT (Model-View-Template) پیروی می‌کند که جداسازی واضحی بین مدل­های داده (لایه داده Model)، نماها (لایه منطقView ) و قالب­ها (لایه ارائه Template) ایجاد می‌کند.

 در ادامه، شرح مفصلی برای هر یک خواهد رفت ولی در اینجا، می‌توان تعاریف کوتاهی برای هر بخش ارائه نمود:

 

مدل‌ها (Model)

به عنوان لایه داده یاد می‌شود، پایگاه داده و یا به ­عبارتی، مجموعه داده‌هایی از یک پایگاه داده را شامل می‌شود.

 

نماها (View)

کنترل­ کننده و مدیریت درخواست­‌ها برای نمایش محتوای داده‌­ها در تمپلیت‌های هدف در آدرس URL مورد درخواست کاربر می‌­باشند که به درستی به آن لایه منطق گفته می‌شود.

 

تمپلیت‌ها(Template)

فایل­های حاوی طرح‌بندی صفحات ­وب HTML همراه با فایل استایل­‌دهی CSS، با منطق نحوه نمایش داده­ها JavaScript را شامل می­‌شوند که از آن با عنوان­‌های لایه ارائه، رابط کاربری و یا Frontend نیز یاد می‌شود.

 

از مهمترین مزیت­های جنگو برای ایجاد یک وب‌سایت، فراهم آوردن یک چارچوب وب قدرتمند برای توسعه سمت سرور Backend – و رابط کاربری FrontEnd – به صورت همزمان می‌­باشد. جداسازی MVT به توسعه‌دهندگان اجازه می­‌دهد به طور همزمان بر روی جنبه‌های مختلف برنامه کار کنند. توسعه‌دهندگان قسمت Frontend می‌توانند با استفاده از کدهای HTML، CSS و JavaScript واسط کاربری پاسخگو و تعاملی را طراحی کنند، در حالی که توسعه‌دهندگان سمت سرور یا Backend، منطق و تغییر داده‌ها را مدیریت می‌کنند.

در مبحث امنیت نیز جنگو چندین معیار امنیتی را به طور پیش‌فرض در بر می‌گیرد، محافظت در برابر آسیب‌پذیری‌های رایج وب از جمله اسکریپت بین سایتی (XSS)، جعل درخواست بین سایتی (CSRF) و تزریق SQL. همچنین یک سیستم احراز هویت قوی نیز با پشتیبانی از مدیریت کاربر، مجوزها و مدیریت session ارائه می‌دهد. این ویژگی‌ها کمک می‌کنند تا اطمینان حاصل شود که پروژه هم در قسمت Frontend و هم در Backend ایمن باقی بماند و داده‌های کاربر محافظت شوند در عین حالی که یکپارچگی کلی سیستم نیز حفظ ‌گردد.

Models


مدل‌­ها، داده‌­ها را در پایگاه داده تعریف، ذخیره و ارائه می­دهند.

در جنگو، داده‌ها به‌عنوان یک ORM (Object Relational Mapping) ارائه می‌شوند، که تکنیکی طراحی شده برای آسان‌تر کردن کار با پایگاه‌های داده است.

رایج ترین راه برای استخراج داده‌­ها از پایگاه داده، SQL Query است. یکی از مشکلات SQL این است که باید درک بسیار خوبی از ساختار پایگاه داده وجود داشته باشد تا بتوان با آن کار کرد.

جنگو با ORM، بدون نیاز به نوشتن دستورات SQL پیچیده، ارتباط با پایگاه داده را بسیار آسان تر می‌کند.

 مدل­ها معمولا در فایلی به نام models.py قرار می‌گیرند.

Views


نماها شامل فانکشن­‌ها و یا متدهایی می­‌باشند که درخواست‌های HTTP را دریافت کرده، مدل(های) مربوطه را در صورت نیاز وارد نموده و تعیین می‌کنند چه داده‌هایی از مدل‌ها به چه تمپلیتی جهت ارائه در لایه رابط کاربری ارسال گردد، تا نتیجه نهایی برای کاربر به نمایش درآید.

❗❗❗  Viewها معمولاً در فایلی به نام views.py تعریف می‌گردند.

Templates


تمپلیت­ها، فایل­‌هایی می­‌باشند که نحوه نمایش نتیجه را ترسیم می‌کنند. تمپلیت­‌ها اغلب فایل‌هایی html با کدهای HTML هستند که طرح‌بندی یک صفحه وب را توصیف می‌کنند، اما می‌توانند همراه با کدهای استایل­دهی  CSSو کدهای منطق JavaScript نیز تعریف شوند تا نتایج بهتری را در رابط کاربری در نحوه نمایش داده­ها ارائه دهند.

 جنگو از HTML استاندارد برای توصیف طرح‌بندی استفاده می‌کند، اما از تگ‌های جنگو نیز برای اضافه کردن منطق استفاده می‌کند.

URLs


جنگو همچنین راهی برای پیمایش در صفحات مختلف یک وب‌سایت فراهم می‌کند. وقتی کاربر یک URL را درخواست می‌کند، جنگو تصمیم می‌گیرد که آن را به کدام view ارسال کند. این فرایند نیز در فایلی به نام urls.py تعریف می‌گردد.