جنگو چیست؟
جنگو (Django) یک فریمورک توسعه وب در زبان برنامه نویسی پایتون میباشد که امکان طراحی و ایجاد بسیار سریع و آسان برنامههای تحت وب را فراهم میکند. این فریمورک از معماری MVC پیروی میکند، بنابراین کدهای مربوط به کار با دادهها (model) و بخش کنترلی (controller) یا business logic و بخش مربوط به رابط کاربر (view) از هم جدا میباشد. هدف اصلی جنگو ساخت آسان سایتهای پیچیده و وابسته به دیتابیس است که بر پایه قابلیت استفاده مجدد و قابل اتصال بودن اجزای مختلف طراحی شده است.
تاریخچه جنگو
جنگو از برنامههای real-world نوشته شده و توسط تیم توسعه دهندگان وب میباشد که در لارنس، کانزاس امریکا رشد کرد. جنگو در پاییز سال 2003 متولد شد، هنگامی که برنامه نویسان وب، آدریان هولاوتی و سیمون ویلیسون در روزنامهی Journal-World، استفاده از پایتون را برای ساختن برنامهها شروع کرده بودند. تیم World Online مسئولیت تولید و نگهداری چندین سایت اخبار محلی را به عهده داشت، که در یک محیط کاری همراه با ضربالعجلهای روزنامه نگاری رشد کرده بود. روزنامه نگاران و مدیران برای سایتهای LJWorld.com، Lawrence.com و KUsports.com خصوصیات جدیدی با برنامهی کاری به شدت پر سرعت را در خواست کردند. در نتیجه سیمون و آدریان یک فریمورک توسعهی وب با صرفه جویی در زمان را توسعه دادند که آن تنها راهی بود که میتوانستند برنامههای قابل پشتیبانی در ضربالعجلهای سریع را بسازند.
در تابستان سال 2005، بعد از توسعهی این فریمورک، جایی که برای ایجاد سایتهای World Online بیشترین تاثیر را داشت، و همچنین هنگامی که جاکب کاپلان مس، به آنها ملحق شد، تصمیم گرفته شد فریمورک به صورت نرم افزار کد باز منتشر شود. آنها فریمورک خود را در جولای سال 2005 به یادبود گیتاریست سبک جاز “جنگو رینهات”، با نام جنگو منتشر کردند.
دانش مورد نیاز پایتون
در صورتیکه تجربهی برنامه نویسی با زبان پایتون را دارید، زحمتی برای یادگیری این فریمورک نخواهید داشت. روی هم رفته کد جنگو چیز بسیار پیچیده و غریب نمیباشد. به دلیل اینکه این فریمورک بر پایه زبان پایتون ایجاد شده است، تاثیرات مختلفی را از این زبان برنامه نویسی به ارث میبرد که در ادامه به معرفی برخی از آنها میپردازم.
- پایتون یک زبان تفسیری است که برای اجرا نیازی به کامپایل کردن ندارد. در این صورت هنگام ویرایش کدها یا ایجاد تغییرات در آنها همزمان برنامه به درستی اجرا خواهد شد.
- دادهها به صورت داینامیک هستند و نگرانی بابت تعریف متغیرهای مختلف نخواهید داشت.
- کدنویسی در این زبان به صورت خلاصهتر است.
در صورتیکه هیچ تجربهای در زبان برنامه نویسی پاتون ندارید، از یادگیری آن لذت خواهید برد، چرا که این زبان برای یادگیری ساده و استفاده از آن لذت بخش است. برای یادگیری پایتون میتوانید از خودآموز رسمی پایتون که در آدرس https://docs.python.org/3/tutorial در دسترس میباشد بهره ببرید. همچنین مجموعه کتابهای آموزش زبان برنامه نویسی پایتون زیادی وجود دارد که میتوانید از آنها برای یادگیری استفاده کنید. این کتابها رو میتوانید از اینجا دانلود کنید.
سرور و هاست مناسب جنگو
جنگو با استفاده از ماژول mod_python به خوبی روی وب سرور آپاچی (apache) اجرا میگردد. روی تمامی سرورهایی که از WSGI پشتیبانی میکنند نیز قابل اجرا میباشد. جنگو در حال حاضر بر روی پایگاه دادههای زیر قابل اجرا است که میتوانید از انعطاف بالایی برای انتخاب یک هاست مناسب جنگو برخوردار شوید.
- PostgreSQL
- MySQL
- SQLite
- Oracle
مزایای جنگو
جنگو یکی از بهترین فریمورکهای پایتون است که امکان ساخت سایتهای پیچیده را در زمانی کوتاه فراهم خواهد کرد. با استفاده از ماژولهایی که در این فریمورک وجود دارد میتوانید بدون انجام کدنویسی اختصاصی صفر تا صد، قابلیتهایی که در جنگو وجود دارد را به راحتی فعال کرده و پیاده سازی کنید. در ادامه به بررسی برخی مزایای استفاده از جنگو میپردازیم.
- افزایش سرعت برنامه نویسی
از آنجایی که جنگو یک فریمورک است و پکیجهای متعددی نیز در آن وجود دارد که روز به روز نیز این پکیجها در حال بیشتر شدن هستند، استفاده از آن میتواند سرعت طراحی و پیاده سازی سایت را چندین برابر کند. با توجه به اینکه زمان گذاشتن روی پروژه باعث بالا رفتن هزینهها خواهد شد، استفاده از django میتواند، از هزینههای زیاد و همچنین هدر رفت زمان جلوگیری کند.
- دسترسی کافی به پکیجهای مختلف
جنگو مدام در حال ارائه پکیجهای مختلف برای استفاده در فریمورک خود است که هر یک از این پکیجها برای پیاده سازی یک قابلیت خاص تعریف شدهاند. اگر در کتابخانه جنگو جستجو کنید به بیش از ۴٫۰۰۰ پکیج دست پیدا خواهید کرد که میتوانید از آنها استفاده کرده و با سرعت بیشتری کار روی پروژه را پیش ببرید.
- استفاده در سایتهای بزرگ
شاید جالب باشد بدانید که فریم ورک جنگو در سایتهایی مثل اینستاگرام، بخشهایی از فیسبوک و پینترست استفاده شده است. توسعه روی جنگو به شدت در حال بیشتر شدن است و به لطف همین بهروزرسانی مداوم میتوانید برای ساخت سایتهایی بزرگ از آن استفاده کنید.
- تمرکز روی سئو و بهینه سازی django
با توجه به رویکردی که برنامه نویس سایت و سئو کار سایت دارند و کار هر دو جدا از هم است اما مکمل هم هستند، جنگو به شکلی ساخته شده است که ضمن کدنویسی استاندارد موارد مربوط به سئو را نیز رعایت کند. ساختار URL یکی از این نمونهها است. آدرس صفحات در جنگو به شکلی است که برای کاربر انسانی قابل درک باشد، بنابراین برای موتورهای جستجو نیز بهینه بوده و سایت میتواند سئو مناسبی داشته باشد.
همچنین یکی دیگر از مقولههای سئو که داشتن سرعت بالا میباشد در این فریم ورک رعایت شده است. البته داشتن سرعت بالای سایت صرفا به فریم ورک بر نمیگردد و باید در تمامی بخشهای یک سایت موارد مربوط به سرعت بالا و کاهش مدت زمان لود صفحات را رعایت کرد.
- کارایی بالا و امکان توسعه
از میان فریم ورکهای متعددی که امروزه استفاده میشود، جنگو برای شروع میتواند جزو اولین لیستهایی باشد که از آن استفاده کنید. طبیعی است که توسعه سایت به مرور برای شما به یک نیاز تبدیل خواهد شد. بنابراین component های مختلف جنگو این امکان را خواهند داد که به راحتی آن را توسعه دهید. بیش از ۴۰۰۰ component تا به امروز برای جنگو ساخته شده است که با قرار دادن در کنار فریمورک میتوانید از انها برای توسعه سایت استفاده کنید. این مقدار مشخصا همه نیازهای شما را برطرف خواهد کرد.
- داشتن امنیت بالا
در مقایسه php و python یکی از موضوعاتی که باعث زیر سوال بردن امنیت خواهد شد این است که اگر زمانی در کد برنامه نویسی php خطایی رخ دهد، مسیر خطا با جزییات کامل آن نمایش داده میشود. این مسئله باعث شناسایی دایرکتوریها و نوع کدنویسی در برخی از موارد خواهد شد. اما در جنگو چنین حالتی وجود ندارد و اگر خطایی وجود داشته باشد، به صورت یک پیغام از طریق تمپلیتها برای مرورگر ارسال خواهد شد.
- پشتیبانی از معماری MVC
در معماری MVC اولین واژه نشانگر کامپوننت MODEL است که مربوط به قسمت اطلاعات و دادهها یا همان پایگاه دادهها میباشد. V نمایانگر کامپوننت VIEW است که در واقع وظیفه رندر کردن قسمت مدل برای کاربر را برعهده دارد یا به زبان ساده و کلی وظیفه نمایش به کاربر را انجام می دهد. C نشانگر کامپوننت CONTROLLER است، قسمتی که درخواستها را از کاربر دریافت میکند و با تعامل بین دو بخش دیگر مدل و ویو پاسخ مناسب به درخواست را ارسال میکند.
- قرارگیری اطلاعات پایگاه داده در مسیری درست
نوشتن اطلاعات دیتابیس مربوط به اتصال پایگاه داده در داخل کد اصلی برنامه کار درستی به نظر نمیرسد. چرا که این اطلاعات تنظیمات اصلی و حساس یک سایت هستند که در صورت خوانده شدن این فایل از هر طریقی باعث ایجاد مشکلات امنیتی خواهد شد. برای همین جنگو یک محل جدا و واحد برای ذخیره اطلاعات دیتابیس و سایر تنظیمات را دارد که به راحتی میتوان تغییراتی مثل انتخاب نوع پایگاه داده را در آن انجام داد.
در صورتی که در بیشتر نرم افزارهای توسعه داده شده توسط PHP این اطلاعات دقیقا در ساختار برنامه نویسی قرار دارند.
- پشتیبانی و در دسترس بودن
به دلیل استفاده زیادی که این روزها از جنگو میشود، نگرانی بابت رفع مشکلات خود نخواهید داشت. انجمنهای پشتیبانی و فرومهای مختلفی هستند که میتوانید به کمک آنها مشکلات خود را برطرف کنید. علاوه بر این به دلیل استفاده بالایی که جنگو به خود گرفته است، مقالات آموزشی و ویدئوهای فراوانی در سطحی بسیار وسیع وجود دارد که میتوانید از آنها برای پیاده سازی و توسعه سایت خود کمک بگیرید.
برای در خواست کمک برای هر یک از جنبههای جنگو – از نصب گرفته تا طراحی برنامه و طراحی پایگاه داده و توسعه – میتوانید به صورت آزاد و مجانی به صورت آنلاین سوالات خود را بپرسید.
- لیست پست الکترونیکی کاربران جنگو جایی که صدها نفر از کاربران جنگو برای پرسیدن و پاسخ سوالات در آنجا جمع شدهاند میتوانید به http://www.djangoproject.com/r/django-users مراجعه کرده و در آنجا عضو شوید.
نتیجهگیری
شاید جنگو در مقایسه با فریمورکهای دیگری نظیر Rail تبلیغ نشده و بیشتر محدود به توضیحاتی در بلاگها و کنفرانس های Python شده است. اما تنها چیزی که باعث معرفی کامل این فریمورک شده، نتیاج خوبی است که بدست آورده و برنامهها و سایتهای خارق العادهای مانند اینستاگرام و پینترست با استفاده از آن ساخته شده است. برخی از ویژگیها و مزایای جنگو که در این مقاله ارائه شد، از محدود فاکتورهایی است که باعث رشد بالای جنگو شده است، اگر مزایای جنگو را نسبت به سایر فریمورکها از نظر تخصصی و کدنویسی بررسی کنید، قطعا نتیجه بهتری خواهید گرفت.
منبع 1: آمانداهاست. http://bit.ly/2DDB0tb
منبع 2: جنگو بوک. http://bit.ly/2J2jHFA