جنگو پایتون چیست؟ یک فریمورک قدرتمند برای وب
جنگو پایتون چیست؟
در مقاله امروز میخواهیم شما را با یکی از فریمورکهای پایتون، این زبان برنامهنویسی محبوب، ماشینمحور، کاربردی با تواناییهای بالای آن در تولید برنامههای وب آشنا شویم. فریمورکی که طرفداران بسیاری را به سمت خود جذب کرده است.
آیا میدانستید مرکز علمی فوقالعادهای مثل ناسا یا یکی از بهترین شبکههای اجتماعی دنیا مانند Instagram از جنگو استفاده میکنند؟
پس با ما همراه شوید تا در ادامه شما را با تاریخچه، ویژگیها و دلایل استفاده از آن را بیان کنیم.
در همین ابتدا یک تعریف اجمالی از این ابزار را برایتان مطرح می کنیم:
جنگو، یک کتابخانه سطح بالا و جعبه ابزاری از کامپوننتهاست. این فریمورک برای وب است که امکان طراحی و ایجاد بسیار سریع و آسان برنامههای تحتوب را فراهم میکند. نکته بسیار جالبی که برای جنگو وجود دارد این است که این کتابخانه از خود زبان پایتون پیادهسازی شده است. پس بسیاری از ویژگیهای خود را از پایتون به ارث برده است و هدفش، راحت کردن کار برنامهنویسان است. یعنی به جای نوشتن کدهای تکراری برای کارهای تکراری، میتوانند روی قسمتهایی از پروژه که مخصوص همان پروژه است کار کنند.
تاریخچه جنگو پایتون چیست؟
در سال 2003 Adrian Holovaty و Simon Willisonبه عنوان یک پروژه داخلی در روزنامه معتبر Lawrence آن را کلید زدند که در جولای سال 2005 میلادی به نام جنگو (django) عرضه شد. رشد و استقبال از جنگو در همان سال آنقدر مثبت بود که چندین سایت بزرگ پر ترافیک به آن روی آوردند. هم اکنون جنگو یک پروژه اوپن سورس یا متنباز با کاربرانی گسترده از تمام جهان است.
جنگو، جعبه ابزاری از کامپوننتها است یعنی چه؟
جنگو نیز مانند همه فریمورکها از معماری MVC پشتیبانی میکند هر چند که نام این معماری در جنگو MVT نام دارد. در تصویر زیر شمای کلی نحوه عملکرد معماری MVT در جنگو را مشاهده میکنید.

در معماری MVC:
-
اولین واژه نشانگر کامپوننت MODEL است که مربوط به قسمت اطلاعات و دادهها یا همان پایگاهداده میباشد.
-
V نمایانگر کامپوننت VEIW است که در واقع وظیفه نمایش به کاربر را انجام میدهد.
-
C نشانگر کامپوننت CONTROLLER است، قسمتی که درخواستها را از کاربر دریافت میکند و با تعامل بین دو بخش دیگر مدل و ویو، پاسخ مناسب به درخواست را ارسال میکند.
در جنگو هم الگو معماری MVT از لحاظ مفهومی دقیقا همان MVC است با این تفاوت که TEMPLATE همان عملکرد VEIW در MVC و VEIW در معماری MVT همان نقش CONTROLLER در معماری MVC را ایفا میکند.
جنگو از چه سرورهایی میتواند استفاده کند؟
Django با استفاده از ماژول mod_python بخوبی بر روی وب سرور آپاچی (apache) اجرا میگردد. همچنین بر روی تمامی سرورهایی که از WSGI حمایت میکنند، قابل اجرا است.
تعریفWSGI: یک سرور، یک ماژول Python، یک Framwork یا API یا هر نرم افزار دیگری نیست. Web Server Gateway Interface یا به اختصار WSGI جزئیاتی است که چگونگی ارتباط یک وب سرور با یک برنامه تحتوب یا یک Framework نوشته شده به زبان برنامه نویسی Pythonرا شرح میدهد. همچنین مشخص مینماید چگونه برنامههای تحت وب سازگار با WSGI، با یکدیگر میتوانند یک درخواست یا Request را Handle نمایند.
سروری که WSGI روی آن فعال است (در اصطلاح با WSGI سازگار است) تنهاRequest های ارسال شده از سمتClient (کاربر) را دریافت نموده و به برنامه مقصد میرساند و سپس پاسخ این Request را از برنامه دریافت نموده و به Client باز میگرداند. لازم به ذکر است WSGI کار دیگری به جز مورد ذکر شده انجام نمیدهد.
همچنین جنگو توانایی راهاندازی سرور FastCGI را دارا میباشد که بدین ترتیب میتوان از جنگو در داخل هر وب سروری که از FastCGI پشتیبانی میکند، استفاده کرد.
بیشتر بخوانید: اگر طرفدار زبان پایتون هستید و نمی دانید پایتون کیوی چیست، توصیه می کنیم این مطلب را بخوانید تا بدانید با پایتون هم می شود اپلیکیشن های موبایلی ساخت
تعریف FastCGI :
اگر بخواهم تعریفی از این سرور برایتان بگویم قبل از آن باید CGI را بشناسید.
CGI (واسط دروازه مشترک): یک روش استاندارد برای ایجاد محتوای پویا (داینامیک) در برنامههای وب استفاده میشود. زمانی که CGI روی یک وب سرور اجرا میشود یک واسطه میان وبسرور و برنامههایی که محتوای وب را تولید میکنند، ایجاد میکند. پس FastCGI (FCGI ) یا واسط دروازه مشترک سریع، بهبود یافته cgi میباشد.
FCGI واسطی مانند واسط دروازه مشترک (CGI) است با این تفاوت که بر خلاف CGI که در آن برای هر درخواست یک پردازش جداگانه توسط وبسرور آغاز میشود، در FCGI یک بازه زمانی تماممدت آمادهٔ پاسخگویی به درخواستها باقی میماند. در واقع تعدادی process روی سرور ایجاد میکند و هر process نیز میتواند به چندین درخواست، پاسخ ارسال نمایند.
نحوه عملکرد کلی نیز به این شکل میباشد که وبسرور درخواست را برایfcgi ارسال میکند و fcgi نیز آن را برای نرمافزارهای مربوطه مثل database ارسال میکند و سپس جواب را برای وبسرور میفرستد و وبسرور نیز همان جواب را دقیقا برای کاربر ارسال میکند. شاید در انتهای این رد و بدل شدن اطلاعات بین کاربر و سرور کانکشن قطع شود، اما processهای مربوط به وبسرور و fcgi همچنان روی سرور باقی میمانند.
سرورهای دیگری نیز از جنگو پشتیبانی میکنند که عبارتاند از:

-
PostgreSQL
-
MySQL
-
SQLite
-
Oracle
الگوهای طراحی جنگو پایتون چیست؟
-
Loosely Coupled
در فریمورک جنگو با پایتون هر عنصر استک مستقل از بقیه عناصر است. یعنی وقتی در یک بخش، کدی از یک پروژه تغییر میکند بر روی عملکرد بقیه بخشها تاثیری کمی دارد و باعث اختلال نمیگردد.
-
Less Coding
همانطور که از اسمش هم پیداست، جنگو به شما کمک میکند تا با نوشتن کدهای کمتری به هدف خود برسید و سرعت طراحی و توسعه پروژه خود را بالا ببرید.
-
(Don’t Repeat Yourself (DRY
DRY به معنای خودت را تکرار نکن؛ یعنی هر چیزی را به جای اینکه چندین بار طراحی کنید و در دام تکرار بیهوده بیفتید یکبار طراحی و چندین بار از آن استفاده کنید.
-
Fast Development
همانطور که گفته شد یکی از مهمترین اهداف جنگو سرعت بخشیدن به انجام پروژه توسط شماست.
-
Clean Design
جنگو بر واضح و تمیز نوشتن کدها تاکید بسیاری دارد.
چرا آموزش جنگو پایتون بهترین فریمورک وب، برای پروژه شما است؟
-
به شکل باور نکردنی سریع
جنگو با این تدبیر طراحی شده است تا به برنامهنویسها کمک کند تا بتوانند از یک مفهوم ساده به پروژهای پیچیده در کوتاهترین زمان ممکن برسند. وقتی در مورد سرعت صحبت میشود، همیشه افراد به فکر عملکرد میافتند. این فریمورک با اشغال حافظهی کمتر و فراخوانهای پایگاه دادهای کمتر توانسته نسبت به سایر فریمورکها سرعت بهتری داشته باشد و به لطف وجود کدهای واضح و سادهای که دارد، فرایند توسعه در جنگو بسیار مؤثر، سریع و کاربردی است. بنابراین استفاده از چنین گزینهای برای توسعهدهندگانی که از نظر زمان تحویل پروژه تحت فشار هستند، بسیار خوب است.
-
انعطافپذیر
از جنگو میتوان برای ساخت تقریبا هر شکل از وبسایت استفاده کرد. از شبکههای اجتماعی گرفته تا وب سایتهای خبری و سیستمهای مدیریت محتوا.
-
امنیت بالا
جنگو به توسعهدهندگان این قابلیت این را میدهد که بتوانند بسیاری از مشکلات امنیتی را در یک اپلیکیشن حذف کنند. این فریمورک به صورتی طراحی شده که بتواند بهترین کارها را برای برقراری امنیت وبسایت انجام دهد. برای مثال: راه امنی را برای پیادهسازی مدیریت کاربران با استفاده از نام کاربری و پسوردشان پیادهسازی کرده است. این متد از اشتباهاتی مانند قرار دادن اطلاعات یک نشست در کوکیها جلوگیری میکند.
-
کامل بودن
این فریمورک دارای یک نقشهبردار شیءمحور است که در آن میتوانید نوع طراحی پروژهی خود را معین کنید.Syntax مدل– دادهای این فریمورک باعث شده تا بتوانید مدلهای خود را به روشهای بهتری ارائه دهید. دستور Migrate تمامی مدلهای موجود را مورد توجه قرار داده و جدولهایی برای دادههای شما میسازد. به علاوه، کنترل بیشتری بر روی طراحی پروژه به شما میدهد و کارهایی از قبیل نقشه سایت، مدیریت محتوا و خیلی دیگر از دستورها را خود انجام می دهد.
-
قابلیت نگهداری
کدها با استفاده از قواعد و الگوهای درست طراحی نوشته شده است، بنابراین شما قادر به ایجاد کدهایی با قابلیت نگهداری و استفادهپذیری دوباره بالا را دارید. یکی از قواعدی که در جنگو پیادهسازی شده DRY یا Don't Repeat Yourself نام دارد. با استفاده از این قاعده شما نیازی به انجام کارهای تکراری ندارید و این موضوع حجم کدهای شما را بسیار کاهش میدهد.
-
قابل حمل
از آنجایی که جنگو با استفاده از پایتون نوشته شده است، میتوان آن را در پلتفرمهای مختلف اجرا کرد. بنابراین شما محدودیت ندارید و میتوانید برنامهها را در هر سیستم عاملی اعم از ویندوز و خانواده یونیکس اجرا کنید. اکثر سرویسدهندگان میزبان نیز امروزه از جنگو پشتیبانی میکنند. اغلب آنها زیرساختها و مستنداتی را برای میزبانی وب سایتهای ایجاد شده با پایتون را به شما ارائه میدهند.
-
پشتیبانی از (Object-Relational Mapping (ORM
-
پشتیبانی از چند زبانی (Multilingual Support)
فریمورک جنگو از سایتهایی با چند زبان مختلف پشتیبانی میکند. پس شما هم میتوانید سایت چند زبانه خود را به راحتی با جنگو توسعه دهید.
-
Framework Support
چه شرکت هایی از جنگو استفاده میکنند؟
جنگو به عنوان BackEnd یا مدیریت سرور برای اینستاگرام و بر روی HIGH-CPU آمازون که ماشینهای غولپیکری هستند، کار میکند.
-
Mozilla Firefox
-
Pinterest
Pinterest نیز مثل اینستاگرام، یکی از شرکتهایی است که از Ruby on Rails به جنگو نقل مکان کرده تا بتواند مقیاسهای دادهای بالاتری را پوشش دهد.
-
NASA
سازمان ناسا از فریمفرک جنگو برای ساخت و بروز رسانی مداوم وبسایت خود بهره میبرد.
-
Washington Post
این غول خبری، میلیونها بازدیدکننده در روز دارد و به جنگو برای سرپا نگه داشتن وبسایت و عملیات آن وابستگی زیادی دارد.
-
EvenBrite
چون این سایت قبل از این نیز، حجم بالایی از کدهای خود را در Pyhton نوشته بود استفاده از فریمورک جنگو کار بسیار سادهای و بهترین گزینه بود. آنها از این فریمورک برای ساخت صفحه Homepage و مدیریت بارهای سنگین ترافیکی استفاده میکنند.
سخن پایانی
با بالا رفتن حجم سایتها و پروژههای نوشته شده و مورد نیاز برای کاربردهای امروزی، پیدا کردن زبان برنامهنویسی مناسب و فریمورکهایی که بتوانند تمام ویژگیها را داشته باشند و با سرعت زیاد بتوانند حجم بالای دادهها را پردازش کنند، به یکی از چالشهای بزرگ برای تیمهای برنامهنویسی تبدیل شده است. معمولا پروژههای موفق، ترکیبی از زبانها و فریمورکها استفاده میکنند تا بتوانند به نتیجهی مورد نظر برسند.
ما به این نتیجه رسیدیم که آموزش پایتون با کمک فریمورک Django که قابلیت پشتیبانی سایتها و پروژههای پرحجم را دارد ، بهترین گزینه است. این فریمورک با استفاده از ویژگیهای ذاتی و بسیار، روشهای جدید و موثر را در ایجاد وبسایت فراهم نموده است. مهمتر از همه تمامی بخشهای این فریمورک آزاد بوده و بصورت رایگان در دسترس تمامی افراد قرار دارد .
نکته دیگری که جنگو را قدرتمند ساخته این است که با پلاگینهای "app" گسترش مییابد. پایتون بر روی هر پلتفرمی، از جمله Mac، PC، Linux، heck اجرا میشود و Django نیز هر کجا که پایتون کار میکند، اجرا شود. این برنامه با سرعت بالا و داشتن تمامی ویژگیها درون خود میتواند بهترین گزینه برای تیمهای برنامهنویسی با حجم کاری بالا باشد.
نظر بدهید
نشانی ایمیل شما منتشر نخواهد شد .