در این مقاله جنگو، ما به این موضوع خواهیم پرداخت که جنگو چیست و یک نمای کلی از آنچه این فریمورک وب را خاص میکند، ارائه میدهیم. ویژگیهای اصلی آن، از جمله برخی از قابلیتهای پیشرفته را در این فریمورک شرح خواهیم داد. در انتهای مقاله شما خواهید دانست که جنگو چیست. در این مقاله به شما خواهیم گفت django چیست و با مزایا، نحوه کار و نصب جنگو روی اوبونتو ۲۰.۰۴ آشنا خواهیم شد.
زبان برنامهنویسی پایتون را بشناسید!
پایتون یک زبان برنامه نویسی پرکاربرد، مفسری، شی گرا (object-oriented) و سطح بالا با محتوای پویا است که برای برنامه نویسی با اهداف عمومی استفاده میشود. این زبان برنامه نویسی توسط گیدو ون روسوم ساخته شد و اولین بار در ۲۰ فوریه ۱۹۹۱ منتشر شد.
گرچه ممکن است شما عنوان پایتون را به عنوان یک مار بزرگ بشناسید، اما نام زبان برنامه نویسی پایتون از یک سریال کمدی تلویزیونی بی بی سی قدیمیبه نام Monty Python’s Flying Circus آورده شده است.
یکی از ویژگیهای شگفت انگیز پایتون این واقعیت است که این زبان نتیجه کار یک نفر میباشد. معمولاً زبانهای برنامه نویسی جدید توسط شرکتهای بزرگی که متخصصان زیادی استخدام میکنند تولید و منتشر میشوند و به دلیل قوانین حق کپی رایت، نام بردن از افراد درگیر در پروژه بسیار دشوار است. اما پایتون در این زمینه یک استثنا است.
البته ون روسوم خودش به تنهایی همه مولفههای پایتون را توسعه و تکامل نداده است. سرعت انتشار و فراگیر شدن پایتون در سراسر جهان در نتیجه کار مداوم هزاران برنامه نویس، آزمایشگر، کاربر (که البته بسیاری از آنها متخصص فناوری اطلاعات نیستند) و علاقه مندان (که اغلب ناشناس هستند) میباشد، اما باید گفت که اولین ایده (دانه ای که پایتون از آن جوانه زد) تنها به یک ذهن ون روسوم رسید.
تاریخچه فریمورک جنگو
جنگو (Django) در سال ۲۰۰۳ توسط Adrian Holovaty و Simon Willison هنگامیکه شروع به استفاده از پایتون برای توسعه یک برنامه وب و طراحی سایت کردند، ایجاد شد. آنها در روزنامه لارنس ژورنال-ورلد کار میکردند و به وضوح ایده خوبی از آنچه میخواستند بدست بیاورند، داشتند.
سرانجام فریمورک جنگو در ژوئیه ۲۰۰۵ با مجوز BSD منتشر شد و نام آن را بر اساس گیتاریست Django Reinhardt نهادند. در سال ۲۰۰۸، بنیادی به نام بنیاد نرم افزار جنگو (DSF) برای نگهداری و توسعه جنگو تأسیس شد.
فریمورک جنگو یا django چیست؟
جنگو یک فریمورک وب مبتنی بر پایتون و زبان سطح بالا میباشد که امکان طراحی و توسعه سریع وب سایتهای ایمن را فراهم میکند. جنگو توسط توسعه دهندگان باتجربه ساخته شده و از بسیاری از مشکلات هنگام تولید وب سایت پیشگیری میکند. این برنامه رایگان و منبع باز (Open Source) است، همچنین دارای یک انجمن پرکاربرد و فعال، مستندات عالی و گزینههای زیادی برای پشتیبانی رایگان و غیر رایگان میباشد.
جنگو چگونه کار میکند؟
وقتی درخواستی به یک سرور وب میرسد، ابتدا این درخواست به جنگو منتقل میشود و جنگو سعی میکند بفهمد چه چیزی مورد درخواست واقع شده است. همچنین جنگو آدرس صفحه وب را میگیرد و سعی میکند بفهمد چه کاری باید انجام دهد. این قسمت توسط url resolver Django انجام میشود (توجه داشته باشید که آدرس وب سایت URL نامیده میشود که مخفف Uniform Resource Locator میباشد.) سپس جنگو لیستی از الگوها را میگیرد و سعی میکند URL را با آنها تطبیق دهد. جنگو الگوها را از بالا به پایین بررسی میکند و اگر درخواست با الگوی خاصی مطابقت داشته باشد، جنگو درخواست را به عملکرد مرتبط منتقل میکند (که به آن View میگویند).
یک حامل نامه را با یک نامه تصور کنید. او در خیابان قدم میزند و هر شماره خانه را با شماره موجود در نامه چک میکند. اگر مطابقت داشته باشد، نامه را آنجا میگذارد. urlresolver نیز همین گونه کار میکند!
در عملکرد view، همه کارهای زیر انجام میشود: ما میتوانیم به یک پایگاه داده متصل شویم تا به دنبال اطلاعات خاصی باشیم. شاید کاربر خواسته است چیزی را در داده تغییر دهد. مانند نامه ای که میگوید: “لطفاً فلان شرح کار را تغییر دهید.” همچنین میتواند بررسی کند که آیا شما مجاز به انجام این کار هستید یا نه، سپس توضیحات را برای شما به روز میکند و پیامیرا ارسال میکند: “انجام شد!” و جنگو میتواند آن را به مرورگر وب کاربر ارسال کند.
مزایای فریمورک جنگو
۱. زبان برنامه نویسی کامل
جنگو تقریباً امکان همه کارهایی را که ممکن است توسعه دهندگان بخواهند انجام دهند را فراهم میکند. از آنجا که هر آنچه شما نیاز دارید بخشی از یک “محصول” است، همه اینها به طور یکپارچه با هم کار میکنند و از اصول طراحی سازگار با هم پیروی میکنند و مستندات گسترده و به روز دارند.
۲. همه منظوره
از جنگو میتوان تقریباً برای ساختن هر نوع وب سایتی استفاده کرد. این برنامه میتواند با هر فریمورک سمت مشتری دیگری نظیر فریم ورک های php نیز کار کند و میتواند تقریباً در هر قالب (از جمله HTML، RSS، JSON، XML، PHP و غیره) محتوایی را ارائه دهد.
۳. پشتیبانی از انواع کامپوننتها
همچنین جنگو تقریباً برای هر عملکردی که بخواهید گزینههایی را برای شما فراهم میکند (به عنوان مثال چندین پایگاه داده معروف، موتورهای templating و غیره)، همچنین میتوان در صورت لزوم از سایر مولفههای مورد نیاز نیز استفاده کرد.
۴. امنیت
جنگو با ارائه یک فریمورک قدرتمند جهت محافظت خودکار از وب سایت طراحی شده است و به توسعه دهندگان کمک میکند تا از بسیاری از اشتباهات معمول امنیتی جلوگیری کنند. به عنوان مثال، جنگو یک روش ایمن برای مدیریت حسابهای کاربری و رمزهای عبور کاربر، اجتناب از اشتباهات رایج مانند قرار دادن اطلاعات جلسه (Sessions) در کوکیها و در جاهایی که آسیب پذیر میباشد یا ذخیره مستقیم رمزهای عبور به جای هش نمودن آنها و… فراهم میکند.
همچنین جنگو به طور پیش فرض از بسیاری از آسیب پذیریها نیز محافظت میکند، از جمله تزریق SQL، برنامه نویسی بین سایت، جعل درخواست بین سایت و کلیک کردن و… .
۵. مقیاس پذیر بودن
جنگو از معماری مبتنی بر مولفه “عدم اشتراک گذاری (shared-nothing)” استفاده میکند. بدین معنا که هر قسمت از معماری مستقل از قسمتهای دیگر است و بنابراین میتواند در صورت لزوم جایگزین شده یا تغییر کند.
۶. امکان گسترش منابع
وجود یک تفکیک واضح بین قسمتهای مختلف به این معنی است که میتواند با افزودن سخت افزار در هر سطح، افزایش سرورهای ذخیره، سرورهای پایگاه داده یا سرورهای برنامه، امکان افزایش تعداد بازدیدکنندگان و در نتیجه افزایش رتبه سئو سایت را ایجاد کند. بسیاری از سایتهای پرترافیک از جنگو استفاده کرده اند تا خواستههای آنها را برآورده کند (به عنوان مثال Instagram و Disqus و …).
۷. قابلیت ارتقا و نگهداری
کد جنگو با استفاده از اصول و الگوهای طراحی نوشته میشود که ایجاد کد قابل نگهداری ساده برای طولانی مدت و قابل استفاده مجدد را فراهم میکند. همچنین جنگو از اصول DRY یا Don’t Repeat Yourself استفاده میکند بنابراین هیچ کپی غیرضروری وجود ندارد، و میزان کدنویسی را کاهش میدهد. همچنین جنگو از فابلیت MVC نیز پشتیبانی میکند.
۸. پشتیبانی از چندین سرور
جنگو به زبان پایتون نوشته شده است و در بسیاری از سیستم عاملها اجرا میشود. این بدان معناست که شما به هیچ بستر سرور خاصی متکی نیستید و میتوانید برنامههای خود را بر روی بسیاری از میزبانیهای وب اجرا کنید.
بهعلاوه، جنگو توسط بسیاری از ارائه دهندگان خدمات میزبانی وب، که اغلب زیرساختهای خاص و مستندات میزبانی سایتهای جنگو دارند نظیر هاست پایتون نیز ارائه میشود.
۹. پنل مدیریت
هنگام نصب برنامه، پنل مدیریت جنگو به طور خودکار نصب میشود. این باعث میشود که توسعه دهنده نیازی به ایجاد دستی پنل مدیریت نداشته باشد.
با استفاده از برنامههای شخص ثالث، کنسول مدیریت پیش فرض جنگو میتواند بهبود یافته و متناسب با نیازهای پروژه شما سازگار شود. همچنین، این فریمورک به شما این امکان را میدهد که رابط کاربری پنل مدیریت پیش فرض را سفارشی کنید.
۱۰. سئو
کدی که در پایتون نوشته شده حتی برای افراد غیر حرفه ای نیز قابل خواندن و درک است. این یکی از عواملی است که باعث میشود برنامههای وب پایتون، سازگار با مبانی سئو (SEO Friendly) باشند. جنگو URLهای معنایی بر اساس عنوان و محتوای صفحه سایت تولید میکند. همچنین برنامههای جنگو سایر ویژگیهای بهینه سازی موتور جستجو را نیز به راحتی پیاده سازی میکنند.
نحوه نصب جنگو روی اوبونتو ۲۰.۰۴
به طور کلی دو روش مختلف برای نصب جنگو در سیستم اوبونتو 20.04 وجود دارد. این دو روش عبارتند از:
- نصب جنگو از مخازن اوبونتو (Ubuntu repositories)
- دریافت جنگو از GIT و نصب جنگو با pip
سادهترین روش برای نصب جنگو در سرور اوبونتو استفاده از مخازن رسمی اوبونتو با مدیر بسته apt است.
مرحله ۱: لیست بسته را به روز کنید.
ابتدا با دستور زیر فهرست بسته را برای سرور خود به روز کنید:
$ sudo apt update
مرحله ۲: نسخه پایتون را به روز کنید.
شما میتوانید با دستور زیر ببینید چه نسخهای از پایتون روی سیستم شما نصب شده است:
$ python3 -V
مرحله ۳: جنگو را نصب کنید.
اکنون زمان نصب جنگو فرا رسیده است. جهت این کار میتوانید از دستور زیر استفاده کنید:
$ sudo apt install python3-django
مرحله ۴: نصب را تأیید کنید.
جهت این کار دستور زیر را وارد کنید:
$ django-admin --version
فریمورک جنگو برای چه کسبوکارهایی مناسب است؟
برای دانستن اینکه جنگو واقعاً برای چه کسب و کاری مناسب است ، باید نگاهی دقیق به سرورها و وب سرورها بیندازیم. اولین نکته این است که سرور باید بداند که شما میخواهید یک صفحه وب به شما ارائه دهد.
یک صندوق پستی (پورت) را تصور کنید که نامههای ورودی (درخواست ها) را مدیریت میکند. این کار توسط یک وب سرور انجام می شود. در ابتدا وب سرور درخواست دریافت نامهها را دریافت نموده و سپس پاسخی را با یک صفحه وب ارسال می کند. اما وقتی میخواهید درخواستی ارسال کنید، باید مقداری محتوا داشته باشید. و جنگو همان فریم ورکی است که به شما در ایجاد محتوا کمک میکند.
با توجه به مطالب ذکر شده در این مقاله، فریم ورک جنگو مناسب انواع سایت ها اعم از سایتهای فروشگاهی، سایتهای شخصی، شرکتی، بلاگها، سایتهای لینوکسی و ویندوزی و … میباشد و تقریبا هیچ گونه محدودیتی برای آن متصور نیست.
نمونههای معروف سایتهایی که با جنگو توسعه داده شدهاند
در لیست زیر، سایتهای ساخته شده با جنگو را تجزیه و تحلیل خواهیم کرد. این سایتها را نه تنها به عنوان مثال بلکه میتوانید به عنوان الهام بخشی از آنچه میتوانید در پروژههای خود استفاده کنید، در نظر بگیرید.
۱. یوتیوب
یوتیوب بزرگترین شبکه ویدئویی و بخشی از گوگل است که از پایتون و چارچوب جنگو در بسیاری از پروژههای خود استفاده میکند. YouTube نیز از این قاعده مستثنی نیست و کل این پلتفرم غول پیکر روی این چارچوب نوشته شده است.
۲. جستجوی گوگل
گوگل مدتهاست که در بسیاری از محصولات خود از پایتون استفاده میکند. آنها همیشه پتانسیل این زبان را میدیدند و سعی میکردند آن را هر چه بیشتر در برنامههای خود پیاده سازی کنند. این شرکت از زبان پایتون و فریمورک جنگو برای پروژه اصلی خود، جستجوی گوگل استفاده میکند.
۳. DropBox
یکی از بزرگترین سایتهای جهان برای ذخیره سازی داده یا به زبان ساده ذخیره سازی ابری DropBox میباشد که روش جدیدی برای ذخیره سازی دادهها ایجاد کرده است: یعنی دخیره سازی روی ابرها به جای کامپیوترها. با استفاده ار این ابزار میتوانید از هر مکانی و از هر دستگاهی به فایلهای خود دسترسی پیدا کنید. معروف ترین و محبوب ترین نرم افزار ذخیره سازی ابری برای اسناد، فیلمها، گرافیکها و غیره یعنی dropbox، به ما این امکان را میدهد که تقریباً هر چیزی را با استفاده از قدرت پایتون ذخیره، همگام سازی نموده و به اشتراک بگذاریم.
۴. اینستاگرام
اینستاگرام یکی از بزرگترین شبکههای اجتماعی در جهان است. به کاربران اجازه میدهد عکسهای خود را در سراسر جهان ارسال کنند. نسخه وب اینستاگرام کاملاً روی جنگو ساخته شده است.
۵. Reddit
Reddit بزرگترین پروژه اخبار اجتماعی است. کاربران میتوانند مقالات مختلفی ارسال کنند، همچنین نظرات خود را داده و به مقالات دیگر نویسندگان دیگر رأی دهند. در این سایت، هزاران اخبار اینترنتی درباره موضوعات مختلف را مشاهده خواهید کرد. بیشتر فعالیتهای این سایت در پایتون انجام میشود.
۶. Pinterest
Pinterest شباهت زیادی به اینستاگرام دارد. در آن کاربران میتوانند عکسهای مختلفی را به اشتراک بگذارند، اما فقط آن دسته از عکسهایی را که با علایق آنها یا انتخاب آنها مطابقت دارند.
۷. Quora
Quora یک وب سایت آمریکایی است. در این پورتال، کاربران میتوانند سوالات مختلفی را بپرسند و سایر کاربران میتوانند به آنها پاسخ دهند. هرچه بیشتر به سوالات پاسخ دهید، امتیاز بالاتری در سایت خواهید داشت. بنابراین، اگر جواب چیزی را نمیدانید، ساده ترین راه برای دریافت پاسخ، ارسال آن در این سایت است.
۸. نقشههای یاهو
به طور کلی، یاهو از پلتفرم Node.js برای پروژههای خود استفاده میکند. با این حال، آنها تصمیم گرفتند از پایتون برای ایجاد نقشههای خود استفاده کنند. نقشههای یاهو یک نقشه عالی و خوب است که به شما امکان میدهد مسیری از نقطه A به نقطه B را بدست آورید. این موتور جستجو در کشورهای شرقی محبوبیت زیادی ندارد، اما یک موتور جستجوی بسیار بزرگ و محبوب در غرب است. نقشههای یاهو قابل اعتماد در نظر گرفته میشوند، به همین دلیل بسیاری از مردم از آنها در سفرهای روزانه خود استفاده میکنند.
۹. موزیلا
یکی از محبوبترین مرورگرها، موزیلا، هر ماه باید صدها میلیون درخواست را انجام دهد. با توجه به تعداد درخواستهایی که از طریق API دریافت میکنند، به راحتی میتوان فهمید که چرا تیم تصمیم گرفتند از PHP و CakePHP به پایتون و جنگو تغییر وضعیت دهد. سایت پشتیبانی موزیلا و همه افزونههای مرورگر آنها اکنون توسط جنگو تأمین میشوند.
۱۰. Spotify
Spotify برنامهای است که به شما امکان میدهد موسیقی را به صورت رایگان پیدا کنید، گوش دهید و با دوستان خود به اشتراک بگذارید. کار با این برنامه بسیار راحت است، زیرا به شما این امکان را میدهد که موسیقی مورد علاقه خود را پیدا کرده و به سرعت به لیست پخش خود اضافه کنید.
کلام آخر
وقتی یک ایده مشخص دارید، فقط چند دقیقه طول میکشد تا با استفاده از جنگو آن را به زبان برنامه نویسی تبدیل کرده و آن را به واقعیت تبدیل نمایید. این واقعیت که جنگو به طور رایگان در دسترس است، امکان ساده سازی فرآیند توسعه وب را (از آنجایی که توسعه دهنده میتواند بر روند طراحی و توسعه عملکرد برنامه تمرکز کنند)، فراهم میکند.
بنابراین، جنگو ابزاری مناسب برای استارتاپها است و طراحان وب باید منعکس کننده چشم انداز و اهداف شرکت باشند. در صورت نیاز به هرگونه مشورت و راهنمایی میتوانید با متخصصین وبرمز در این زمینه تماس حاصل نمایید.
بسیار جامع و کامل.
باسپاس
خوشحالیم که از مقاله رضایت داشتهاید