جنگو پایتون چیست؟
در مقاله امروز میخواهیم شما را با یکی از فریمورکهای پایتون، این زبان برنامهنویسی محبوب، ماشینمحور، کاربردی با تواناییهای بالای آن در تولید برنامههای وب آشنا کنیم. فریمورکی که طرفداران بسیاری را به سمت خود جذب کرده است.
آیا میدانستید مرکز علمی فوقالعادهای مثل ناسا یا یکی از بهترین شبکههای اجتماعی دنیا مانند 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 ارسال میکند و سپس جواب را برای وبسرور فرستاده و وبسرور نیز همان جواب را دقیقا برای کاربر ارسال میکند. شاید در انتهای این رد و بدل شدن اطلاعات بین کاربر و سرور کانکشن قطع شود، اما روندهای پردازش شده مربوط به وبسرور و 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 نیز اجرا میشود. این برنامه با سرعت بالا و داشتن تمامی ویژگیها درون خود میتواند بهترین گزینه برای تیمهای برنامهنویسی با حجم کاری بالا باشد.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.