جنگو
- DOTWEB
جنگو یک زبان سطح بالا پایتون است که توسعه سریع وب سایت های امن و قابل نگهداری را امکان پذیر می کند. جنگو که توسط توسعه دهندگان باتجربه ساخته شده است که بسیاری از دردسرهای توسعه وب را برطرف می کند، بنابراین می توانید روی نوشتن برنامه خود تمرکز کنید. جنگو رایگان و منبع باز است و گزینه های بسیاری برای پشتیبانی رایگان و پولی است.
تاریخچه جنگو
جنگو در ابتدا بین سالهای 2003 و 2005 توسط یک تیم وب که مسئول ایجاد و نگهداری وبسایتهای روزنامهها بودند، توسعه یافت. پس از ایجاد تعدادی سایت، تیم شروع به بررسی و استفاده مجدد از بسیاری از کدهای رایج و الگوهای طراحی کرد. این کد رایج به یک فریم ورک توسعه وب عمومی تبدیل شد که در جولای 2005 به عنوان پروژه Django منبع باز معرفی شد.
هر نسخه قابلیتها و رفع اشکالهای جدیدی را اضافه کرده است، از پشتیبانی از انواع جدید پایگاههای داده، موتورهای قالب، و حافظه پنهان گرفته تا افزودن توابع و کلاسهای نمای «عمومی» (که مقدار کدی را که توسعهدهندگان باید برای تعدادی از وظایف برنامه نویسی بنویسند را کاهش میدهد)
جنگو اکنون یک پروژه منبع باز مشارکتی و پر رونق است که هزاران کاربر و مشارکت کننده دارد. جنگو هنوز دارای برخی از ویژگیهایی است که منشا آن را نشان میدهد، جنگو به یک فریم ورک همه کاره تبدیل شده است که قادر به توسعه هر نوع وبسایتی است.
محبوبیت جنگو
هیچ اندازه گیری آسان و قطعی برای محبوبیت فریم ورک های سمت سرور وجود ندارد .
بر اساس تعداد سایتهای پرمخاطب که از جنگو استفاده میکنند، تعداد افرادی که در پایگاه کد مشارکت میکنند، و تعداد افرادی که هم رایگان و هم پولی برای پشتیبانی ارائه میکنند، بله، جنگو یک فریم ورک محبوبی است.
سایتهای پرمخاطب که از جنگو استفاده میکنند عبارتند از: Disqus، Instagram، Knight Foundation، MacArthur Foundation، Mozilla، National Geographic، Open Knowledge Foundation، Pinterest و Open Stack.
جنگو به شما کمک می کند تا نرم افزارهایی بنویسید که عبارتند از:
کامل
جنگو از فلسفه «باتری شامل باتری» پیروی میکند و تقریباً هر کاری را که توسعهدهندگان بخواهند «بیرون از جعبه» انجام دهند، ارائه میکند. از آنجایی که هر چیزی که نیاز دارید بخشی از یک “محصول” است، همه آنها به طور یکپارچه با هم کار می کنند، از اصول طراحی سازگار پیروی می کنند، و دارای اسناد گسترده و به روز هستند.
همه کاره
جنگو را میتوان برای ساختن تقریباً هر نوع وبسایتی (از سیستمهای مدیریت محتوا گرفته تا شبکههای اجتماعی و سایتهای خبری) مورد استفاده قرار داد و از آن استفاده کرد. این می تواند با هر فریم ورک سمت مشتری کار کند و می تواند محتوا را تقریباً در هر قالبی (از جمله HTML، فیدهای RSS، JSON، XML و غیره) ارائه دهد.
در داخل، در حالی که تقریباً برای هر عملکردی که ممکن است بخواهید (به عنوان مثال چندین پایگاه داده محبوب) انتخاب هایی را ارائه می دهد، همچنین می تواند در صورت نیاز برای استفاده از سایر مؤلفه ها گسترش یابد.
امن
جنگو به توسعه دهندگان کمک می کند از بسیاری از اشتباهات امنیتی رایج با ارائه فریم ورکی که برای “انجام کارهای درست” برای محافظت از وب سایت به طور خودکار مهندسی شده است، جلوگیری کنند. به عنوان مثال، جنگو روشی امن برای مدیریت حسابهای کاربری و رمزهای عبور ارائه میکند، از اشتباهات رایج مانند قرار دادن اطلاعات جلسه در کوکیها در جایی که آسیبپذیر است (در عوض کوکیها فقط حاوی یک کلید هستند و دادههای واقعی در پایگاه داده ذخیره میشوند) یا ذخیره مستقیم رمزهای عبور اجتناب میکند. به جای هش رمز عبور.
هش رمز عبور یک مقدار با طول ثابت است که با ارسال رمز عبور از طریق یک تابع هش رمزنگاری ایجاد می شود. جنگو می تواند با اجرای آن از طریق تابع هش و مقایسه خروجی با مقدار هش ذخیره شده، صحت رمز عبور وارد شده را بررسی کند. با این حال، به دلیل ماهیت “یک طرفه” تابع، حتی اگر مقدار هش ذخیره شده به خطر بیفتد، برای مهاجم سخت است که رمز عبور اصلی را پیدا کند.
جنگو به طور پیش فرض محافظت در برابر بسیاری از آسیب پذیری ها، از جمله تزریق SQL، اسکریپت بین سایتی، جعل درخواست بین سایتی و Clickjacking را امکان پذیر می کند.
مقیاس پذیر
جنگو از معماری «Shared-nothing» مبتنی بر مؤلفه استفاده میکند (هر بخش از معماری مستقل از بقیه است و بنابراین میتواند در صورت نیاز جایگزین یا تغییر کند). داشتن تفکیک واضح بین بخشهای مختلف به این معنی است که میتواند با افزودن سختافزار در هر سطحی، برای افزایش ترافیک مقیاسبندی شود: سرورهای caching ، سرورهای پایگاه داده یا سرورهای برنامه. برخی از شلوغترین سایتها با موفقیت جنگو را برای برآورده کردن خواستههای خود افزایش دادهاند (مانند اینستاگرام).
قابل نگهداری
کد جنگو با استفاده از اصول و الگوهای طراحی نوشته شده است که ایجاد کدهای قابل نگهداری و قابل استفاده مجدد را تشویق می کند. به طور خاص، از اصل «خودت را تکرار نکن» DRY استفاده می کند، بنابراین تکرار غیرضروری وجود ندارد و مقدار کد را کاهش می دهد. جنگو همچنین گروه بندی عملکردهای مرتبط را به “برنامه های کاربردی” قابل استفاده مجدد و در سطح پایین تر، گروه بندی کدهای مرتبط را در ماژول ها (در امتداد خطوط الگوی Model View Controller (MVC) ترویج می کند.)
قابل حمل
جنگو به زبان پایتون نوشته شده است که روی پلتفرم های زیادی اجرا می شود. این بدان معناست که شما به هیچ پلتفرم سرور خاصی وابسته نیستید و میتوانید برنامههای خود را بر روی انواع مختلفی از لینوکس، ویندوز و Mac OS X اجرا کنید. علاوه بر این، جنگو توسط بسیاری از ارائهدهندگان میزبانی وب، که اغلب زیرساختها و زیرساختهای خاصی و مستندات برای میزبانی سایت های جنگو را ارائه میدهند، به خوبی پشتیبانی میشود.
کد جنگو
در یک وبسایت سنتی مبتنی بر داده، یک برنامه وب منتظر درخواستهای HTTP از مرورگر وب است. هنگامی که درخواستی دریافت میشود، برنامه بر اساس URL و احتمالاً اطلاعات موجود در دادههای POST یا دادههای GET، موارد مورد نیاز را بررسی میکند. بسته به آنچه مورد نیاز است، ممکن است اطلاعات را از پایگاه داده بخواند یا بنویسد یا سایر وظایف مورد نیاز برای برآورده کردن درخواست را انجام دهد. سپس برنامه پاسخی را به مرورگر وب برمیگرداند، و اغلب به صورت پویا یک صفحه HTML برای مرورگر ایجاد میکند تا با قرار دادن دادههای بازیابی شده در محلهایی در قالب HTML نمایش داده شود.
برنامه های تحت وب جنگو معمولا کدهایی را که هر یک از این مراحل را انجام می دهد در فایل های جداگانه گروه بندی می کنند:
URL: در حالی که پردازش درخواست ها از هر URL از طریق یک تابع واحد امکان پذیر است، نوشتن یک تابع نمای جداگانه برای مدیریت هر منبع بسیار قابل نگهداری است. یک نشاندهنده URL برای هدایت درخواستهای HTTP به نمای مناسب بر اساس URL درخواست استفاده میشود. نشانگر URL همچنین میتواند الگوهای خاصی از رشتهها یا ارقام را که در URL ظاهر میشوند مطابقت دهد و آنها را به عنوان داده به یک تابع view ارسال کند.
:View یک view یک تابع کنترل کننده درخواست است که درخواست های HTTP را دریافت می کند و پاسخ های HTTP را برمی گرداند. نماها به دادههای مورد نیاز برای برآورده کردن درخواستها از طریق مدلها دسترسی دارند و قالببندی پاسخ را به الگوها واگذار میکنند.
Models: مدلها شی های پایتون هستند که ساختار دادههای یک برنامه کاربردی را تعریف میکنند و مکانیسمهایی را برای مدیریت (افزودن، اصلاح، حذف) و پرس و جو رکوردها در پایگاه داده ارائه میکنند.
Templates: الگو یک فایل متنی است که ساختار یا طرح بندی یک فایل(مانند صفحه HTML) را با متغیرهایی که برای نمایش محتوای واقعی استفاده می شود، تعریف می کند. یک نما می تواند به صورت پویا یک صفحه HTML با استفاده از یک الگوی HTML ایجاد کند و آن را با داده های یک مدل پر کند. یک الگو می تواند برای تعریف ساختار هر نوع فایلی استفاده شود.