جنگو چیست؟
طبق نظرسنجی سالیانه StackOverFlow، پایتون به عنوان دومین زبان برنامهنویسی محبوب در جهان شناخته میشود. استفاده از این زبان به دلیل همه منظوره بودن آن، در هرجایی امکان پذیر است. اگر قصد توسعه وبسایت با استفاده از پایتون را دارید، باید به فکر استفاده از یک فریمورک قدرتمند برای این کار باشید. فلسک و جنگو، دو مورد از بهترین فریمورکهای پایتون برای توسعه وب هستند. در ادامه در آکادمی سبزلرن به سوالاتی نظیر جنگو چیست؟ چرا باید از جنگو استفاده کنیم؟ و چه شرکتهایی از جنگو استفاده میکنند، پاسخ خواهیم داد.
در قدم اول، بهتر است با مفهوم فریمورک آشنا شویم.
فریمورک چیست؟
اصولا برنامه نویسها، افراد تنبلی هستند. آنها همیشه به دنبال راههای سریعتر برای توسعه پروژههای خود بوده و هستند. آنها همیشه سعی میکنند ابزارهایی برای کارهای مختلف ایجاد کنند که زمان کمتری از آنها بگیرد. مشخص نیست چه زمانی، چه روزی و در چه شرایطی، کدام برنامه نویس تنبل توانست کدها و ماژولهایی که نوشته بود را به شکل یک افزودنی به زبان برنامهنویسی درآورد و قواعد خاصی برای استفاده از آنها تعیین کند و نام آن را فریمورک بگذارد.
یک فریمورک، در واقع مجموعهای از قواعد، الگوهای طراحی، ماژولها و کتابخانههای کاربردی است که به آنها در توسعه سریعتر پروژهها کمک میکند. برخی از برنامه نویسها، کدهایی که یک بار نوشتهاند را بهصورت ماژول یا کتابخانه نگهداری میکنند. زمانی که تعداد ماژولها و کتابخانههایی با کاربرد مشابه یا نزدیک به یکدیگر زیاد شد، آنها را تبدیل به یک فریمورک کرده و در پروژههای خود، از آنها استفاده میکنند. البته همه اینطور نیستند!
یک فریمورک، امکان توسعه یک پروژه بدون کدنویسی از صفر را میدهد. درون هر فریمورک، کدهای آماده بسیاری در قالب کتابخانه یا ماژول وجود دارد که تنها کافیست برنامه نویس محترم آنها را فراخوانی و شخصی سازی کند. به همین سادگی، بخش قابل توجهی از پروژه بدون نیاز به نوشتن کد جلو میرود.
اکنون که با فریمورکها آشنا شدیم، میتوانیم به معرفی فریمورک جنگو بپردازیم.
فریمورک جنگو (Django) چیست؟
حالا به بخش اصلی این مطلب رسیدیم. جنگو (DJango) یک فریمورک در زبان برنامهنویسی پایتون است که در توسعه وب کاربرد دارد. با استفاده از جنگو، میتوانید سایت موردنظر خود را به بهترین صورت پیادهسازی کنید. البته فراموش نکنید این فریمورک، یک فریمورک سمت سرور یا Back-end است و عملا هسته یک برنامه یا سایت با استفاده از از فریمورک ساخته میشود. جنگو سعی کرده به شعار معروف «Don’t Repeat Yourself» یا همان «دوباره انجامش نده» عمل کرده و امکانات زیادی برای توسعه سریعتر پروژه و عدم انجام کارهای تکراری فراهم کرده است.
جنگو بهصورت متنباز ارائه شده و کاملا رایگان است. علاوه بر این، یک فریمورک سطح بالا محسوب میشود و کدهای آن، شبیه به زبان انگلیسی هستند. فریمورک Django از معماری MVT برای توسعه برنامهها و اپلیکیشنهای تحت وب استفاده میکند. قابلیت نگهداری کد بالا، مقیاس پذیری و پشتیبانی توسط توسعه دهندگان باتجربه، از جمله دلایلی هستند که توسعه دهندگان تازهکار را به یادگیری Django سوق میدهند.
تاریخچه جنگو
فریمورک جنگو، در سال 2003 توسط دو توسعهدهنده به نامهای سایمون ویلسون و آدریان هالووتی که در روزنامه Lawrence Journal-World مشغول به کار بودند، ساخته شد. این دو توسعهدهنده، با توجه به مشکلاتی که در استفاده از زبان PHP داشتند، تصمیم به توسعه ابزاری برای توسعه سریعتر پروژههای خود گرفتند و برای این کار، زبان پایتون را انتخاب کردند. فرآیند توسعه فریمورک جنگو در همین سال به پایان رسید و رسما Django متولد شد.
تا سال 2005، جنگو به عنوان یک فریمورک داخلی در روزنامه Lawrence Journal-World مورداستفاده قرار میگرفت؛ تا اینکه این شرکت تصمیم به انتشار عمومی و رایگان این فریمورک گرفت. در این سال، این فریمورک تحت گواهی نرم افزارهای آزاد BSD بهصورت متنباز منتشر شد. در این سال، سایمون ویلسون از توسعه این فریمورک کنارهگیری کرد و شخص دیگری به نام جیکوب کاپلان ماس، جای او را در تیم پر کرد. در همین موقع، توجه برخی از سازمانها و شرکتها به این فریمورک جلب شد و بسیاری از این فریمورک استفاده کردند.
در سال 2008، یک سازمان غیرانتفاعی به نام Django Software Foundation تاسیس شد و مسئولیت توسعه و نگهداری از این فریمورک را برعهده گرفت. روند توسعه و نگهداری Django تا به امروز ادامهدار بوده و این فریمورک را تبدیل به یکی از محبوبترین فریمورکهای توسعه وب در سرتاسر جهان کرده است.
ویژگیهای جنگو چیست؟
فریمورک Django دارای ویژگیهای متعددی است که امکان پرداخت به همه آنها در یک مقاله وجود ندارد. به همین دلیل، تصمیم گرفتیم برخی از مهمترین ویژگیهای این فریمورک پایتون را معرفی کنیم.
-
استفاده از معماری MVT
درباره معماری MVT در ادامه بهصورت مفصل حرف میزنیم؛ اما در اینجا میتوانیم بگوییم که MVT، به معماری و ساختار Django اشاره دارد. در MVT، امکان توسعه پروژه بهصورتی که امکان کنترل کامل روی آن وجود داشته باشد، فراهم شده است. این مدل شباهت زیادی با معماری مشهور MVC دارد و به عنوان یک معماری عالی برای توسعه برنامه و وباپلیکیشنهای مبتنی بر جنگو شناخته میشود.
استفاده از این معماری، باعث افزایش سرعت توسعه پروژه میشود.
-
امنیت
با توجه به جامعه بزرگ توسعه دهندگانی که از Django استفاده میکنند، این فریمورک همواره در برابر حملات و مشکلات امنیتی مقاوم است. پروژههای مبتنی بر جنگو در برابر حملاتی نظیر تزریق SQL، جعل درخواست و Cross-Site Scripting مصون هستند؛ البته این به این معنی نیست که موارد و الزامات امنیتی مرتبط با پروژه را جدی نگیرید!
-
مقیاس پذیری
برای این فریمورک، تفاوتی بین یک پروژه عظیم در شرکت گوگل با یک پروژه شخصی کوچک وجود ندارد. در هر حالت، کار خود را به بهترین صورت انجام داده و میتواند در پروژههای کوچک یا بسیار بزرگ مورداستفاده قرار بگیرد.
-
استفاده از ORM
واژه ORM مخفف عبارت Object-Relational Mapping به معنای نگاشت رابطه به اشیاء است. لطفا نترسید! این اصطلاح برخلاف اسم خوفناکش، دارای تعریف سادهای است. ORM وظیفه دارد کوئریهای (Query) مربوط به بخشهای مختلف پروژه را برای ارتباط با دیتابیس ایجاد کند. در گذشته، توسعه دهنده مجبور به نوشتن همه کوئریها یا یادگیری TSQL برای توسعه یک ORM اختصاصی بود. در جنگو، این کار با استفاده از مدل ORM این پلتفرم انجام میشود و نیازی به توسعه جداگانه این ابزار نیست. البته این مدل نسبت به رقبا، دارای ضعفهایی است.
-
سازگاری بالا با SEO
یکی از مشکلاتی که فریمورکهای طراحی وب در زبانهای مختلف دارند، سازگاری با اصول SEO است. برای مثال، فریمورکهایی نظیر React و Angular.js، در مباحث مربوط به Technical SEO دچار مشکل هستند. فریمورک Django دارای ابزارهای متعددی برای بهینه سازی سایت برای موتورهای جستجو است. برای مثال، قالبهای ساخته شده با این فریمورک به سادگی کش (Cache) شده و فایلهای CSS و JS مورداستفاده در قالب را فشرده میکنند. این کار به افزایش سرعت بارگزاری صفحه کمک بسیاری میکند.
علاوه بر این، یک ابزار عالی برای مدیریت فایل Robots.txt در جنگو وجود دارد که امکان مدیریت این فایل حیاتی را فراهم میکند. در مجموع، این فریمورک به خوبی توانسته نظر متخصصان سئو بسیاری را به خود جلب کند و بهتر از تصورات اولیه آنها عمل کند.
-
مبتنی بر کامپوننت
کامپوننت (Component) در زبان انگلیسی به معنای قسمت یا تکه است. در برنامهنویسی، به بخشهای مختلف یک پروژه، کامپوننت گفته میشود. کامپوننتها قابلیت استفاده مجدد را دارند و تاثیر بسزایی در افزایش سرعت توسعه یک برنامه دارند. برای آشنایی بیشتر با این مفهوم در برنامهنویسی، پیشنهاد میکنم مقاله کامپوننت چیست؟ را مطالعه کنید.
حالا به بحث اصلی برگردیم. فریمورک جنگو مبتنی بر کامپوننت است؛ به این ترتیب، در صورتی که قبلا قسمتی از یک پروژه را نوشتهاید، کافیست آن را بهصورت یک کامپوننت ذخیره کنید و در مواردی که به آن نیاز دارید، آن را در دیگر بخشها فراخوانی و مورداستفاده قرار دهید. به این ترتیب نیازی به انجام دوباره بسیاری از کارها نیست!
مزایای فریمورک جنگو
علاوه بر مواردی که در بخش ویژگیهای فریمورک Django گفته شد، موارد دیگری نیز وجود دارند که نمیتوان آنها را به عنوان یک ویژگی درنظر گرفت؛ اما مزیتهایی هستند که با استفاده از این فریمورک، میتوانید از آنها بهرهمند شوید.
-
جامعه بزرگ توسعه دهندگان
این فریمورک، دارای انجمنهای بزرگی به زبانهای مختلف است که گل سرسبد آنها، انجمن رسمی Django در سایj djangoproject.com است. این انجمن در پلتفرم دیسکورد نیز فعال بوده و امکان تعامل بین توسعه دهندگان این فرریمورک را فراهم میکند. علاوه بر این، توسعه دهندگان زیادی نیز در سایت StackOverFlow فعال هستند که دستی بر آتش در استفاده از جنگو دارند.
-
تنوع کتابخانهها
کتابخانهها، مجموعهای از کدهای آماده هستند که در توسعه سریعتر پروژهها مورداستفاده قرار میگیرند. در جنگو، امکان استفاده از کتابخانههای پایتون وجود دارد و این کار، باعث افزایش سرعت و کاهش مدت زمان این فرایند میشود.
-
وجود مستندات آموزشی کامل
در سایت djangoproject.comمستندات آموزشی کامل و مثالزدنی برای کار با فریمورک Django منتشر شده که به تنهایی، میتواند برای یادگیری جنگو کافی باشد. همچنین دورههای آموزشی متعددی در سطح اینترنت برای یادگیری این فریمورک منتشر شده که میتوانید از آنها استفاده کنید.
-
قابل حمل و کراس پلتفرم
از آنجایی که پایتون، یک زبان برنامهنویسی کراس پلتفرم است؛ امکان اجرا و استفاده از برنامههای ساخته شده با آن در اکثر پلتفرمهای دسکتاپ وجود دارد. جنگو نیز از این مزیت Python بینصیب نمانده و استفاده از آن در سیستم عاملهای مشهور نظیر ویندوز، مک، لینوکس و یونیکس، امکانپذیر است.
-
پشتیبانی گسترده از انواع دیتابیسها
جنگو از انواع دیتابیسهای رایج بین برنامه نویسان نظیر MySQL، اوراکل، MongoDB و SQLite پشتیبانی کرده و سازگاری بالایی با این برنامهها دارد. علاوه بر این، بسته به نوع پروژه امکان استفاده از چندین نوع دیتابیس در یک پروژه نیز وجود دارد.
-
روند یادگیری ساده
کدهای نوشته شده در فریمورک Django، همگی با استفاده از زبان پایتون نوشته میشوند؛ به همین دلیل روند یادگیری این فریمورک سادهتر از رقبای خود در دیگر زبانهای برنامهنویسی است. اگر پشتکار داشته و به پایتون مسلط باشید، میتوانید در حدود 4 هفته این فریمورک را در سطح مقدماتی فرا بگیرید.
معایب فریمورک جنگو
هیچ چیز در دنیا بدون ایراد یا نقص نیست و همیشه در هرجایی، یک مشکل وجود دارد. به همین دلیل یک لیست از مشکلات و معایب استفاده از فریمورک جنگو در ادامه آمده است.
- در پروژههای کوچک، ممکن است به مشکلاتی برخرود کنید که به دلیل پیچیدگیهای ناشی از مقیاس پذیری جنگو باشد. در کل، برای پروژههای کوچک، بهتر است از سایر روشها یا فریمورکها استفاده کنید.
- زمانی که بخواهید از میکروسرویسها در یک پروژه استفاده کنید، کار با جنگو کمی سخت میشود. البته این مشکل با استفاده از فریمورکهای دیگر و ادغام آنها با Django برطرف میشود.
- دیگر ایراد این فریمورک، این است که هیچ قاعده خاصی برای توسعه در اختیار برنامه نویس قرار نمیدهد. این مورد به تنهایی میتواند به عنوان یک مزیت درنظر گرفته شود؛ اما در حقیقت دست توسعه دهنده را بیش از حد باز میگذارد و ممکن است باعث سردرگمی او شود.
- برای استفاده از جنگو، باید مهارت و تسلط بالایی به مباحث پایتون و خود فریمورک جنگو داشته باشید. زیرا در بسیاری از موارد، پیچیدگیهایی در پروژه به وجود میآید که کار را برای توسعه دهندگان تازهکار، طاقتفرسا میکند.
- عدم وجود معماریهای دیگر، آخرین مورد از معایب جنگو در این لیست است. غیر از معماری MVT، امکان استفاده از معماری یا الگوی طراحی متفاوتی در فریمورک جنگو وجود ندارد. البته امکان پیادهسازی آنها وجود دارد که بسیار دشوار و زمانبر است.
معماری MVT در Django چیست؟
خب!
همانطور که قبلتر گفته شد، فریمورک جنگو از معماری MVT استفاده میکند. بهصورت کلی، برنامههایی نظیر برنامههای دسکتاپ و تحت وب که دارای رابط کاربری (User Interface) هستند، از یک مدل معماری نرم افزاری به نام MVC استفاده میکنند. MVC مخفف مدل (Model)، ویو یا نما (View) و کنترلر (Controller) است. در معماری MVT، به جای کنترلر با مفهومی به نام قالب یا Template طرف هستیم. در ادامه، این مفاهیم را به شکل خلاصه تشریح میکنیم.
منظور از Model در جنگو چیست؟
مدلها، در واقع بخشهایی از دیتابیس هستند که دادههای برنامه را در قالب یک مدل ذخیره میکنند. این کار به مرتبسازی و دسته بندی دادههای درون دیتابیس کمک میکند. برنامه نویس موظف است مدلها را ایجاد کند و با استفاده از ویو و تمپلیت، مدلها را روی یک URL نگاشته و در جای مناسب، فراخوانی کند.
منظور از View در جنگو چیست؟
به زبان ساده، هر چیزی که کاربر در صفحه مشاهده میکند، با استفاده از نما یا View ساخته شده است. وظیفه ویو، دریافت درخواستهای کاربران و پردازش آنها است تا با این کار، بتواند Model مناسب را از دیتابیس فراخوانی و به کاربرد نمایش دهد. علاوه بر این، این مولفه وظیفه پر کردن تمپلیتها برای نمایش نتایج به کاربر را دارد.
منظور از Template در Django چیست؟
منظور از قالب یا تمپلیت در جنگو، قالبهای نوشته شده به زبان HTML است که صفحات وب را ایجاد میکند. این بخش از معماری MVT میتواند شامل تگهایی به زبان Django بوده و امکان پیاده کردن فیلتر برای انجام عملیاتهای پیچیده را فراهم میکند.
برای یادگیری جنگو، باید چه پیشنیازهایی داشته باشیم؟
از آنجایی که فریمورک جنگو، یکی از فریمورکهای پایتون است، یادگیری پایتون قبل از شروع آموزش Django الزامی است. همچنین باید به مباحثی نظیر:
- ساختار کدها و دادهها در پایتون
- مفاهیم OOP یا برنامهنویسی شیگرا
- مدیریت دیتابیس و دستورات SQL
- و JSON و API Rest
مسلط باشید.
شرکتهایی که از Django استفاده میکنند
در دنیا، شرکتهای کوچک و بزرگ زیادی وجود دارند که از فریمورک Django برای توسعه پروژههای خود استفاده میکنند.
- نتفلیکس
- اینستاگرام
- یوتیوب
- اسپاتیفای
- پلتفرم Disqus
- دراپ باکس (DropBox)
- پینترست
- Udemy
- خبرگزاری واشینگتن پست
- سازمان فضایی ناسا
- شرکت بوئینگ
- Atlassian (سازنده برنامههای مدیریت پروژه و کار تیمی نظیر Trello)
- موزیلا (سازنده مرورگر فایرفاکس)
- سایت نشنال جئوگرافیک
وضعیت بازارکار جنگو چگونه است؟
از نظر درآمد، توسعه دهندگان جنگو در وضعیت بسیار خوبی قرار دارند. در ایران، توسعه دهندگان جنگو بسته به توانایی و تخصص خود، میتوانند بین 15 تا 40 میلیون تومان و بالاتر درآمد داشته باشند. حتی اگر بتوانید تبدیل به یک توسعه دهنده وب فول استک شوید، میتوانید درآمد بسیار بالاتری کسب کنید.
در کشورهای دیگر نیز بازارکار جنگو رو به رشد است و میزان درآمد توسعه دهندگان Django نسبت به بسیاری از حوزهها بیشتر است. در جدول زیر، میتوانید خلاصهای از وضعیت درآمد برنامه نویسان جنگو در سطوح مختلف در کشورهای خارجی که از سایت Glassdoor استخراج شده را مشاهده کنید.
نام کشور | درآمد توسعه دهندگان جونیور | درآمد توسعه دهندگان سینیور |
آمریکا | 59,000 دلار در سال | 150,000 دلار در سال |
کانادا | 80,000 دلار در سال | 120,000 دلار در سال |
آلمان | 40,000 دلار در سال | 78,000 دلار در سال |
سوییس | 66,000 دلار در سال | 115,000 دلار در سال |
انگلیس | 44,000 دلار در سال | 107,000 دلار در سال |
برای یادگیری جنگو از کجا شروع کنم؟
در این مطلب سعی کردیم به زبان ساده، شما را با فریمورک جنگو آشنا کرده و به سوالاتی نظیر جنگو چیست؟ چه ویژگیهایی دارد و کدام شرکتها از آن استفاده میکنند، پاسخ دهیم. در حال حاضر، بسیاری از شرکتها در حال استفاده از فریمورک هستند و موقعیتهای شغلی زیادی برای توسعه دهندگان مسلط به جنگو وجود دارد. اگر به یادگیری این فریمورک علاقمند شدهاید، خبر خوبی برای شما داریم!
با توجه به تعدد دورههای آموزش جنگو در سطح اینترنت، یافتن یک دوره خوب کار سختی است. سختتر از آن، این است که بتوانید دورهای با تدریس مناسب و سرفصلهای کامل پیدا کنید! به همین دلیل، در آکادمی سبزلرن تصمیم به انتشار دوره متخصص Django گرفتیم! دورهای که مباحث آن از صفرِ مطلق آغاز شده و در ادامه، مباحث مختلف جنگو را به شما آموزش میدهد. برای تضمین کیفیت دوره، 40 درصد از محتوای دوره به صورت رایگان منتشر شده؛ بنابراین میتوانید از بخش قابل توجهی از دوره استفاده کنید و آن را با دیگر دورههای مطرح آموزش جنگو مقایسه کنید! این دوره شامل پشتیبانی تمام وقت هم هست تا شما یادگیری خودتان را با خیال به سرانجام برسونید پس فرصت را از دست ندهید و هرچه سریعتر، یادگیری خودتان را شروع کنید.
توضییحات بسیار کامل و عالی بود باتشکر
❤️❤️