جنگو (Django) چیست؟
جنگو (Django) چیست؟
اگر قصد دارید با استفاده از پایتون یک وبسایت بسازید، زمان آن فرارسیده است که به فکر یک فریمورک باشید. انتخاب کردن یک فریمورک برای توسعه وب بسیار اهمیت دارد چرا که تعداد زیادی از آنها در بازار وجود دارند که هر کدام برای رفع نیازهای متفاوتی از پروژه طراحی شدهاند.
برای بسیاری از شرکتها و پروژههای مستقل، فریمورک جنگو (Django) که یکی از محبوبترین ابزارهای توسعه وب بهشمار میآید، میتواند یک انتخاب بدون دردسر باشد. همچنین تعداد شرکتهایی که به دنبال استخدام برنامهنویس جنگو هستند، روز به روز بیشتر میشود؛ اما چرا؟ در این مقاله میخواهیم بررسی کنیم که جنگو (Django) چیست؟ و چرا بسیاری از توسعهدهندگان در سراسر جهان از آن استفاده میکنند؟
فریمورک چیست؟
فریمورک (Framework) چیزی نیست جز مجموعهای از ماژولها که کار توسعه را آسانتر میکند. فریمورکها به شما این امکان را میدهند که به جای اینکه برنامهها و وبسایتها را از ابتدا ایجاد کنید، با استفاده از یک منبع موجود و آماده این کار را انجام دهید.
اینگونه است که وبسایتها – حتی وبسایتهای سادهای که توسط یک شخص طراحی شدهاند – همچنان میتوانند عملکردهای پیشرفتهای مانند پشتیبانی از احراز هویت، پنلهای مدیریت و ادمین، فرمهای تماس، بخش نظرات، پشتیبانی از آپلود فایل و… داشته باشند. به عبارت دیگر، اگر میخواستید از ابتدا یک وبسایت را طراحی کنید، باید خودتان تمام این اجزاء را توسعه میدادید. اما با استفاده از یک فریمورک، این اجزاء از قبل ساخته شدهاند، فقط باید آنها را بهدرستی پیکربندی کنید تا با سایت شما مطابقت داشته باشند.
جنگو (Django) چیست؟
django یا جنگو، یک فریمورک متنباز، رایگان و سطح بالای پایتون است که توسعهی سریع و طراحی تمیز و کاربردی را برای برنامههای وب امکانپذیر میسازد. این فریمورک که توسط توسعهدهندگانی باتجربه ساخته شده است، بسیاری از دردسرهای توسعه وب را برطرف میکند؛ بنابراین بدون اینکه بخواهید همهچیز را از ابتدا کدنویسی کنید، میتوانید بر روی نوشتن برنامهی خود تمرکز کنید.
اکنون که میدانیم فریمورک جنگو (Django) چیست؟ بیایید کمی در مورد تاریخچه Django صحبت کنیم:
جنگو در گذشته و حال
فریم ورک Django توسط Adrian Holovaty و Simon Willison توسعهدهندگانی که در روزنامه Lawrence Journal-World در کانزاس کار میکردند، طراحی شد. در آن زمان، آدریان و سایمون با PHP کدنویسی میکردند. اما از آنجایی که وبسایت آنها نیاز به بهروزرسانی سریع داشت، رسیدن به ددلاینها دشوار بود. آدریان و سایمون به چیزی نیاز داشتند که بتوانند بهسرعت وبسایت را با آن بسازند. آن وقت بود که آنها تصمیم گرفتند از پایتون استفاده کنند.
آنها بعدها شروع به کار بر روی جنگو کردند تا کدنویسی را سادهتر و مؤثرتر کنند. در سال 2005، جنگو به عنوان یک پروژهی متنباز به صورت عمومی منتشر شد. زمانی که جامعه جنگو شکل گرفت، توسعهی آن آغاز شد و تعداد وبسایتهایی که از جنگو استفاده میکردند به سرعت افزایش یافت. برخی از بهترین برنامههای ساختهشده با جنگو عبارتاند از Instagram ،Youtube ،Pinterest ،Dropbox و Spotify. هرساله برنامههای جدیدی به لیست سایتهای ساخته شده با جنگو اضافه میشوند و شرکتهای مختلفی نیز شروع به استخدام برنامهنویس جنگو میکنند. امروزه، جامعهی Django بیش از 11000 توسعهدهنده از 166 کشور را با یکدیگر متحد کرده است.
بیشتر بخوانید: زبان برنامه نویسی پایتون چیست؟
چرا جنگو (Django) برای توسعه وب مناسب است؟
در میان فریمورکهای پایتون، Djangoاغلب به عنوان بهترین فریمورک برای توسعهی وباپلیکیشنها در نظر گرفته میشود. حتی در نظرسنجی توسعهدهندگان Stack Overflow در سال ۲۰۱۸ در لیست محبوبترین فریمورکها قرار گرفت.
Django از اصل «دوباره انجامش نده (Don’t Repeat Yourself)» پیروی میکند و این، فریمورک Django را از نظر راندمان زمانی کارآمد میکند. به عبارت دیگر، نیازی به بازنویسی کدهای موجود نیست؛ زیرا جنگو این امکان را به شما میدهد که وبسایت خود را مانند قطعات یک مجموعه لگو در کنار یکدیگر قرار دهید. این فریمورک برای سیستمهای با حجم بالای اطلاعات مناسب است و به لطف بسیاری از ابزارهای کمکی میتواند زمان توسعه را کاهش دهد.
به گفتهی بنیاد نرمافزار جنگو (Django Software Foundation)، جنگو «برای رسیدن به ددلاینهای فشردهی خبرگزاریها و درعینحال برآورده کردن الزامات سختگیرانهی توسعهدهندگانِ باتجربه، ساخته شد.» امروزه جنگو با شعار «The web framework for perfectionists with deadlines» شناخته میشود.
به لطف سینتکس ساده و خوانایی کد، برنامههای نوشته شده با جنگو تمیز و دارای ساختار مناسبی هستند. این امر به توسعهدهندگان کمک میکند تا ایدههای خود را به واقعیت تبدیل کرده و الزامات را سریعتر برآورده کنند.
پیش نیازهای لازم برای یادگیری جنگو (django) چیست؟
برای شروع، باید بر زبان پایتون مسلط باشید. بنابراین اگر با این زبان آشنایی ندارید، ابتدا آموزش پایتون را شروع کنید و سپس به سراغ جنگو بروید در غیر این صورت یادگیری جنگو فایده چندانی برایتان نخواهد داشت.
اما ممکن است این سوال برایتان به وجود بیاید که آیا کار با جنگو نیازمند آشنایی با پایتون به صورت حرفهای ست؟ پاسخ منفی است! کافیست با مفاهیم پایهی Python، از جمله متغیرها، انواع داده، کلاسها و توابع، کنترل جریان و کنترل خطا آشنا باشید و بتوانید از pip برای نصب بستهها و اجرای دستورات ابتدایی از خط فرمان استفاده کنید.
جنگو (Django) برای چه کارهایی مورد استفاده قرار میگیرد؟
فریمورک Django نام خود را مدیون گیتاریست جاز، Django Reinhardt، است که با وجود اینکه دو انگشتش پس از یک تصادف فلج شده بود، میتوانست با گیتار خود قطعههای خیرهکنندهای را اجرا کند. فریمورک جنگو نیز میتواند وظایف متعددی را انجام دهد. از Django میتوان برای موارد زیر استفاده کرد:
- سیستمهای مدیریت ارتباط با مشتری (CRM)
- سیستمهای مدیریت محتوا (CMS) برای استفادهی داخلی و تجاری
- پلتفرمهای ارتباطی
- موتورهای رزرو
- پلتفرمهای مدیریت اسناد
Django برای موارد زیر نیز میتواند عالی باشد:
- سیستمهای تأیید هویت
- سیستمهای فیلترینگِ دارای قوانین متغیر پویا و پارامترهای پیشرفته
- راهکارهای تجزیه و تحلیل دادهها و محاسبات پیچیده
- یادگیری ماشین
ممکن است علاقهمند باشید: دیجیتال مارکتینگ چیست؟
آیا جنگو opinionated است؟
جنگو معمولا به عنوان یک فریمورک opinionated شناخته میشود. به این معنی که دارای توصیهها و استانداردهای خاص خود برای ساخت و توسعه وب اپلیکیشنها است. این استانداردها میتوانند در مورد ساختار برنامه، نحوهی تعریف مدلها، ویوها و تمپلیتها و یا نحوهی کار با اجزای دیگر جنگو باشد.
با این حال، جنگو به اندازهی بسیاری از فریمورکهای دیگر نظیر Ruby on Rails، کاملا opinionated نیست و به برنامهنویسان انعطافپذیری بیشتری در انتخاب روشها و تکنیکهای مختلف برای توسعه وب اپلیکیشنها میدهد. به همین دلیل، جنگو را میتوان یک فریمورک میانه بین opinionated و unopinionated دانست.
معماری MVT در جنگو چیست؟
معماری MVT که مخفف Model-View-Template است، معماری اصلی جنگو است که برای ساخت وب اپلیکیشنها استفاده میشود. این معماری به طور کلی به سه بخش تقسیم میشود:
Model
در این بخش، تمامی کلاسها و به طور کلی هر چیزی که با دادههای دیتابیس ارتباط دارند تعریف میشوند. مدلها برای مدیریت ساختار دادهها و روابط بین آنها به کار میروند.
View
وظیفهی اصلی این مولفه، دریافت درخواستهای کاربران و پردازش آنهاست. ویوها همچنین مسئول انتخاب و پر کردن تمپلیتها به منظور نمایش نتایج به کاربر هستند.
Template
از آنجایی که در معماری MVT، کتابخانهی جنگو وظیفه Controller را بر عهده میگیرد، مولفه Template به وجود میآید. Template ها، قالبهای HTML هستند که به کمک آنها صفحات وب ایجاد میشوند. آنها همچنین میتوانند شامل تگهای جنگو و فیلترهایی برای انجام عملیاتهای پیچیدهتر باشند.
با ما همراه باشید تا در ادامهی پاسخ به سؤال جنگو (Django) چیست؟ در مورد مزایای استفاده از آن بیشتر توضیح دهیم.
مزایای فریمورک جنگو (Django)
جامعه قدرتمند
جامعهی بزرگی در اطراف Django تشکیل شده و هر روز مشتاقان بیشتری به آن میپیوندند. آنها بهطور مداوم اجزای فریمورک را بهروزرسانی کرده و آن را بهبود میبخشند و درعینحال کتابخانههای جدیدی را برای حل مشکلاتی که متخصصان اغلب هنگام توسعهی برنامههای وب با آن مواجه میشوند، توسعه میدهند. علاوه بر این، زمانی که مشکلی در استفاده از جنگو داشته باشید، پاسخ خود را میتوانید در جامعه قدرتمند Django جستوجو کنید.
پنل ادمین پیشفرض
پنلهای ادمین برای کمک به مدیریت برنامههای شما طراحی شدهاند. یک پنل ادمینِ جنگو بهطور خودکار از کد پایتون تولید میشود، در حالی که ایجاد یک پنل ادمین بهصورت دستی زمان زیادی میبرد و انجام آن کاملاً بیمعنی است.
به لطف برنامههای شخص ثالث، فضای زیادی برای سفارشیسازی در پنل ادمین جنگو وجود دارد. علاوهبراین، Django به شما اجازه میدهد تا رابط کاربری را با استفاده از بستههای شخص ثالث تغییر داده و داشبوردهای منحصربهفردی را برای نیازهای خود به آن اضافه کنید.
مناسب برای سئو
جنگو تعدادی ابزار بهینهسازی موتورهای جستوجو (SEO) نیز ارائه میدهد. با فریمورک سئوی جنگو، توسعهدهندگان میتوانند با استفاده از قالبهای کششده و فشردهسازی CSS و جاوااسکریپت، زمان بارگذاری صفحه را کاهش دهند. حتی ابزاری برای مدیریت robots.txt نیز وجود دارد. در مجموع، قابلیتهای سیستم مدیریت محتوای Django فراتر از انتظارات بسیاری از متخصصان سئو است.
کتابخانهها
Django این امکان را به توسعهدهندگان میدهد که در هنگام ساخت هر پروژهای بتوانند از کتابخانهها استفاده کنند. برخی از کتابخانههای محبوب عبارتاند از: فریمورک Django REST که مسئول ساخت رابطهای برنامهنویسی اپلیکیشن (APIها) است، Django CMS که برای مدیریت محتوای وبسایت طراحی شده است، و Django-allauth که مجموعهای یکپارچه از برنامههای جنگو برای احراز هویت، ثبتنام، مدیریت حساب و احراز هویت حساب کاربری شخص ثالث است.
ORM
نگاشت رابطه به شئ (Object-Relational Mapping یا ORM) در Django، با تعدادی از پایگاههای داده محبوب سازگار است، اما ویژگی اصلی آن این است که به توسعهدهندگان اجازه میدهد تا با چندین پایگاه داده بهطور همزمان کار کنند. علاوهبراین، جنگو امکان مهاجرت از یک پایگاه داده به پایگاه داده دیگر و انجام عملیات مشترک را بدون نیاز به نوشتن کد اضافی فراهم میکند.
Batteries included
رویکرد Batteries included در جنگو به این معنی است که این فریمورک همهی امکانات لازم برای توسعهی یک برنامهی کاربردی کامل را شامل میشود. Django قالببندی HTML، مسیردهی URL، نگاشت رابطه به شئ (ORM) و مدیریت نشست را ارائه میدهد و این به توسعهدهندگان کمک میکند تا نیازی به جستوجوهای آزاردهنده برای ابزارهای شخص ثالث نداشته باشند. پکیجهای جنگو به شما کمک میکنند تا به سرعت هر چیزی، از رباتهای سخنگو گرفته تا راهحلهای پیچیدهی مبتنی بر GPS را ایجاد کنید.
مقیاسپذیری
اجزای Django مستقل هستند، به این معنی که در صورت لزوم میتوان آنها را مانند قطعات لگو اضافه یا حذف کرد. بسته به نیازمندیهای هر محصول، میتوان مقیاس توسعه را افزایش یا کاهش داد و در صورت لزوم تعداد و پیچیدگی اجزای جنگو را تغییر داد.
امنیت بالا
Django به صورت پیشفرض از برنامهها محافظت میکند. برخی از اشتباهات رایج امنیتی مرتبط با پایتون را کاهش میدهد و همچنین از برنامهها در مقابل حملات اسکریپت بینسایتی، جعل درخواست و SQL injection محافظت میکند.
چه زمانی از جنگو استفاده نکنیم؟
در بخش قبل بررسی کردیم که یک سری از دلایل استفاده از جنگو (django) چیست؛ و همانطور که مید انیم، جنگو مزایای زیادی دارد و بسیار محبوب است. اما سوال اینجاست که چه زمانی از این فریمورک استفاده نکنیم؟ در این جا به چند حالت میپردازیم که استفاده از جنگو به صرفه نیست.
- اگر برنامهی شما خیلی بزرگ است و نمیتوانید همه چیز را در یک کد پایه نگه دارید.
- میخواهید از میکروسرویسها استفاده کنید. در این حالت بهتر است همه چیز را با جنگو( یا به طور کلی هر چیز دیگری به تنهایی) انجام ندهید و بهتر است هر لایه توسط یک تیم اختصاصی مدیریت شود. البته جنگو میتواند در برخی موارد به شما کمک کند.
- میخواهید یک برنامه بسیار ساده ایجاد کنید که نیازی به پایگاه داده، عملیات فایل و یا هر چیز حتی کمی پیچیده ندارد. میکروفریمورکها برای این کاربردها مناسبترند. Flask یکی از محبوبترین میکروفریمورکهای پایتون است. میکروفریمورکهای مشابهی در فناوریهای دیگر نیز در دسترس هستند، مانند Slim در PHP و Apache Spark در جاوا و Express.js در Node.js و غیره.
- اگر به هیچ عنوان با python آشنایی ندارید. که در این صورت بهتر است وقت و انرژی خود را روی استفاده از جنگو نگذارید.
چه شرکتهایی از جنگو (Django) استفاده میکنند؟
سایتها و برنامههای بسیاری بر پایه جنگو ساخته شدهاند. بر اساس گزارشی از SimilarTech تا تاریخ می 2021، تعداد 83.359 وبسایت با جنگو ساخته شده است. بیایید نگاهی دقیقتر به بهترین و معروفترین برنامههای ساختهشده با جنگو بیندازیم.
از سال 2010 و زمانی که اینستاگرام شروع به کار کرد، در ساخت اینستاگرام از Django استفاده میشد. جنگو به Mike Krieger و Kevin Systrom، بنیانگذاران اینستاگرام کمک کرد تا اولین نسخهی این برنامه را در مدتی حدود دو هفته توسعه دهند. به گفتهی Mike Krieger، شروع کار با جنگو بسیار آسان بود؛ زیرا نیازی به تصمیمگیری یا تنظیمات زیادی نداشت و آزمایش کردن را آسان میکرد. اینستاگرام به سرعت رشد کرد و این شرکت شروع به جستوجوی فناوریهای جدید برای تقویت سیستم خود کرد. آنها گزینههای مختلفی را در نظر گرفتند، اما در نهایت به این نتیجه رسیدند که این Python و Django است که از پس مقیاسِ کار آنها برمیآید.
Dropbox
دراپباکس یکی دیگر از نمونههای عالی Django است. دراپباکس از ابتدا از پایتون بهعنوان فناوری اصلی خود استفاده کرده است. آنها تاکنون از چندین نسخهی پایتون استفاده کردهاند و در حال حاضر نیز از نسخهی سفارشی پایتون 3.5 استفاده میکنند. دراپباکس با استفاده از جنگو، فایلها را ذخیره و به اشتراک میگذارد، حسابهای کاربری را در چندین دستگاه همگامسازی میکند و تاریخچه فایلها را ارائه میکند.
Spotify
اسپاتیفای حاوی حجم وسیعی از دادهها است و کاربران را قادر میسازد تا بتوانند در هر دستگاهی به موسیقی گوش دهند. برای انجام این کار، اسپاتیفای از Python در کنار Django استفاده میکند.
Washington Post
جنگو که از ابتدا برای رسیدن به ددلاینهای فشردهی خبرگزاریها ساخته شد، همچنان در میان اپلیکیشنهای خبری محبوب است. یکی از بزرگترین نمونههای برنامهی جنگو از این نوع، وباپلیکیشن Washington Post، یکی از تأثیرگذارترین روزنامههای جهان، است. واشنگتن پست از فریمورک جنگو برای مدیریت حجم بالای اطلاعات و ارائه عملکرد سریع و کارآمد استفاده میکند.
Mozilla
موزیلا فایرفاکس از ابتدا با پایتون ساخته نشده بود، بلکه PHP و CakePHP فناوریهای مورد استفاده موزیلا بودند. اما با رشد آن، از آنجایی که مجبور بودند که روزانه با میلیونها جستوجو سروکار داشته باشند، نیاز فوری به اتخاذ فناوریهای جدید برای مدیریت ترافیک بالا و بهبود کارایی وجود داشت. اینجا بود که پایتون و جنگو وارد شدند. اکنون افزونههای مرورگر فایرفاکس و سایت پشتیبانی موزیلا با Django ساخته شدهاند.
جنگو در میان پلتفرمهای شبکههای اجتماعی محبوب است، زیرا از پس حجم عظیمی از دادهها برمیآید و میتواند در هر ثانیه تعامل هزاران کاربر را مدیریت کند. پینترست با داشتن 250 میلیون کاربر فعال، باید عملکردی عالی داشته باشد و درعین حفظ کیفیت عملکرد، توانایی مقیاسپذیری بالایی را ارائه کند. پینترست با استفاده از Django این مسئله را مدیریت میکند و به کاربران خود اجازه میدهد تا یکدیگر را دنبال کرده و بردها و پینها را به اشتراک بگذارند.
National Geographic
نشنال جئوگرافیک، سازمانی که متعهد به کاوش و حفاظت از دنیای ما است، نمونهی عالی دیگری از استفاده از جنگو است. آنها از جنگو برای ساخت یک CMS سفارشی برای مدیریت محتوای وبسایت خود، از تصاویر گرفته تا تبلیغات و ماژولها، استفاده میکنند.
NASA
از آنجایی که امنیت، یکی از قدرتمندترین قابلیتهای جنگو است، این فریمورک نقش بزرگی در اپلیکیشنهای دولتی و مراقبتهای بهداشتی ایفا میکند. ناسا، سازمان ملی هوانوردی و فضایی ایالات متحده، از فریمورک Django برای ارائه سایت خود به 2 میلیون بازدیدکنندهی خود در ماه استفاده میکند.
بیشتر بخوانید: مزایا و معایب پایتون، بررسی دقیق این زبان برنامه نویسی کاربردی
ساخت اولین پروژه در جنگو
بعد از نصب جنگو، یک پروژه جدید ایجاد می کنید. در این پروژه یک فایل به نام views.py و یک فایل دیگر به نام models.py ایجاد می شود.
در فایل models.py شما کلاس ها و مدل های داده ای خود را تعریف می کنید. فرض کنید می خواهیم یک برنامه برای مدیریت مقالات داشته باشیم. پس یک کلاس مدل به نام Article با خصوصیات مثل عنوان، محتوا و تاریخ انتشار ایجاد می کنیم.
در فایل views.py، view هایی ایجاد می کنیم تا با مدل هایمان کار کنند. مثلا یک view برای نمایش لیست مقالات، یک view برای نمایش جزئیات یک مقاله و یک view برای ایجاد مقاله جدید.
سپس با استفاده از url ها، view ها را به url های مختلف اختصاص می دهیم. در نهایت با اجرای دستور «python manage.py runserver» سرور جنگو راه اندازی می شود و می توانید برنامه خود را مشاهده کنید!
جمعبندی
جنگو یک فریمورکِ پایتونِ سریع، ایمن و مقیاسپذیر است که برای تسهیل فرآیند توسعه کاربران خود سرمایهگذاری بسیاری کرده است. فلسفهی «دوباره انجامش نده» که جنگو براساس آن ساخته شده است، به توسعهدهندگان این امکان را میدهد تا از کدهایی که برای پروژههای دیگر خود نوشتهاند مجدداً استفاده کنند و این امر زمان مورد نیاز برای توسعهی محصول را کاهش میدهد.
در این مقاله ابتدا بررسی کردیم که جنگو (django) چیست؟ و سپس مواردی نظیر تاریخچه جنگو، کاربرهای جنگو، پیشنیازهای آن، معماری جنگو، مزایای استفاده از این فریمورک و بازار کار آن و غیره را بررسی کردیم.
لایتک؛ برگزارکننده تخصصیترین دوره های آموزش برنامه نویسی
لایتک با برگزاری تخصصیترین دوره ها، به یکی از معتبرترین و پرطرفدارترین مراکز آموزشی در این حوزه تبدیل شده است. موسسه ما با بهرهگیری از اساتید مجرب و منابع آموزشی بهروز، محیطی مناسب برای یادگیری و پیشرفت در دنیای برنامهنویسی را فراهم میکند. شما میتوانید برای دریافت اطلاعات بیشتر درباره دوره های آموزش برنامه نویسی لایتک کلیک کنید.
لینک ثبت نام دوره جنگو: دوره Django Developer
وب سایت: http://www.laitec.ir
مشاوره رایگان و ثبت نام: 66013455-021
تلفن همراه: 7603991-0919
اینستاگرام: instagram.com/laitec.ir
تلگرام: t.me/laitecparavid
آدرس کانال لایتک در پیام رسان های داخلی (بله، ایتا، آی گپ، روبیکا): @laitecir
#پایتون #python #زبان_برنامه_نویسی #برنامه_نویسی #فریم_ورک #دوره_پایتون #زبان #لایتک #شریف #laitec #دوره_برنامه_نویسی #جنگو #مقاله_پایتون #django #django_developer #developer #مقاله_برنامه_نویسی #مقاله_جنگو