جنگو (چارچوب نرمافزاری)
جنگو (به انگلیسی: Django) یک چارچوب نرمافزاری تحت وب آزاد و متنباز است که به زبان پایتون نوشته شدهاست و از معماری مدل-نما-قالب (به انگلیسی: Model–View–Template) پیروی میکند. هدف اصلی جنگو ساخت آسان سایتهای پیچیده و وابسته به دیتابیس است و بر پایهٔ قابلیت استفادهٔ مجدد و قابل اتصال بودن اجزای مختلف، توسعهٔ سریع و اصل خودت را تکرار نکن (DRY) طراحی شدهاست. جنگو سراسر از پایتون استفاده میکند، حتی برای تنظیمات، فایلها و مدلهای اطلاعات.
نویسنده(های) اصلی | Adrian Holovaty,Simon Willison |
---|---|
توسعهدهنده(ها) | Django Software Foundation |
انتشار ابتدایی | ۲۱ ژوئیه ۲۰۰۵ |
انتشار پایدار | ۳٫۰٫۸
۱ ژوئیه ۲۰۲۰ |
مخزن | |
نوشتهشده با | پایتون |
سیستمعامل | چندسکویی |
حجم | ۸٫۶ مگابایت |
گونه | چارچوب نرمافزاری تحت وب |
پروانه | اجازهنامه بیاسدی |
وبگاه |
از وبسایتهای مشهوری که از جنگو استفاده میکنند میتوان به پیبیاس،اینستاگرام،بنیاد موزیلا،واشینگتن تایمز اشاره کرد. جنگو همچنین در ساخت شبکه اجتماعی پینترست استفاده شد اما بعداً، به فریم ورک فلسک انتقال یافت.
تاریخچه
جنگو در پاییز سال ۲۰۰۳ توسط Simon Willison و Adrian Holovaty در حین ایجاد برنامه در شرکت Lawrence Journal-World متولد شد. سپس در سال ۲۰۰۵ تحت اجازهنامه بیاسدی منتشر شد. نام جنگو از جنگو راینهارت، نوازندهٔ گیتار جاز گرفته شدهاست.
در ژوئن سال ۲۰۰۸، بنیاد نرمافزاری Django Software Foundation (DSF) برای توسعه و حفظ جنگو شکل گرفت.
امکانات
کامپوننتها (اجزاء)
هسته اصلی جنگو مبتنی بر معماری MVT است که شامل Model برای ارتباط با پایگاه داده، View و Template است. در معماری MVT نقش View همانند نقش controller در معماری MVC است.
همچنین در هسته فریم ورک جنگو امکانات زیر گنجانده شده:
- وب سرور مستقل و داخلی برای توسعه و تست سریع برنامه
- قابلیت اعتبارسنجی و ترتیب بندی، برای انتقال و ذخیرهسازی اطلاعات فرمهای اچتیامال در پایگاه داده
- سیستم قالب بندی صفحات با استفاده از مفهوم ارث بری که از برنامهنویسی شیءگرا الهام گرفته شده
- پشتیبانی از کلاسهای میانافزار که با استفاده از آن میتوان توابع سفارشی برای پردازش درخواستهای مراحل مختلف برنامه استفاده کرد
- ابزاری برای بینالمللیسازی و محلیسازی کامپوننتهای جنگو به انواع زبانهای برنامهنویسی دیگر
- ابزاری برای خواندن زبان نشانه گذاری اکسامال یا نمایش جیسون از مدلهای جنگو
- ابزارهایی برای توسعه و گسترش موتور قالب بندی صفحات
- استفاده از ابزار قدرتمند و انعطافپذیر Django REST framework برای ساخت رابط برنامهنویسی کاربردی(API) وب
نرمافزارهای بستهبندیشده
در توزیع اصلی جنگو تعداد زیادی بستههای نرمافزاری وجود دارد که شامل:
- ابزاری برای اعتبارسنجی قابل توسعه
- رابط کاربری پنل مدیریت بهطور پویا (داینامیک)
- ابزارهایی برای تولید آراساس و اتم (خوراک وب)
- فریمورکی برای درست کردن برنامههای مبتی بر سامانه اطلاعات جغرافیایی(GIS)
طبقهبندی وب سرور
جنگو میتواند به راحتی با استفاده از وب سرورهایی همچون آپاچی، انجیناکس با به کار بردن واسط دروازه کارساز وب(WSGI)، گونیکورن (سرور HTTP)، و یا، Cherokee اجرا شود.
همچنین جنگو، بهطور رسمی، از چهار پایگاه داده بک اند از جمله: پستگرسکیوال، مایاسکیوال، اسکیوال لایت
و پایگاه داده اوراکل پشتیبانی میکند.
برای استفاده از نواسکیوال در جنگو، انشعاب (توسعه نرمافزار) ای به نام django-nonrel بهوجود آمده که امکان پشتیبانی از پایگاه دادههایی همچون مانگودیبی و گوگل اپ انجین را فراهم کردهاست.
جنگو میتواند با استفاده از جایتون بر بستر برنامههای سمت سرور مبتنی بر سکوی جاوا، نسخه سازمانی(Java EE) مانند WildFly یا GlassFish استفاده شود که برای اجرای آن، نیاز به نصب django-jython که اتصال به پایگاه داده را ممکن میکند نیاز است.
تاریخچهٔ انتشار نسخه
گهگاه تیم جنگو، نسخههای خاصی از برنامه را با عنوان پشتیبانی بلند مدت (LTS) منتشر میکند. همچنین نسخهٔ LTS بهطور معمول تا سه سال یا بیشتر، بهروزرسانیهای امنیتی و اصلاحات برنامه را دریافت میکند.
نسخهها | تاریخ | یادداشت |
---|---|---|
۰٫۹۰ | ۱۶ نوامبر ۲۰۰۵ | First release |
۰٫۹۱ | ۱۱ ژوئن ۲۰۰۶ | "new admin" |
۰٫۹۵ | ۲۹ ژوئیه ۲۰۰۶ | "magic removal" |
۰٫۹۶ | ۲۳ مارس ۲۰۰۷ | "newforms", testing tools |
۱٫۰ | ۳ سپتامبر ۲۰۰۸ | API stability, decoupled admin, unicode |
۱٫۱ | ۲۹ ژوئیه ۲۰۰۹ | Aggregates, transaction based tests |
۱٫۲ | ۱۷ مه ۲۰۱۰ | Multiple db connections, CSRF, model validation |
۱٫۳ | ۲۳ مارس ۲۰۱۱ | Class based views, staticfiles |
۱٫۴ پشتیبانی بلندمدت (LTS) | ۲۳ مارس ۲۰۱۲ | Timezones, in browser testing, app templates |
۱٫۵ | ۲۳ فوریه ۲۰۱۳ | Python 3 Support, configurable user model |
۱٫۶ | ۶ نوامبر ۲۰۱۳ | Dedicated to Malcolm Tredinnick, db transaction management, connection pooling |
۱٫۷ | ۲ سپتامبر ۲۰۱۴ | Migrations, application loading and configuration |
۱٫۸ پشتیبانی بلندمدت (LTS) | ۱ آوریل ۲۰۱۵ | Native support for multiple template engines. Supported until at least April 2018 |
۱٫۹ | ۱ دسامبر ۲۰۱۵ | Automatic password validation. New styling for admin interface. |
۱٫۱۰ | ۱ اوت ۲۰۱۶ | Full text search for PostgreSQL. New-style middleware. |
۱٫۱۱ پشتیبانی بلندمدت (LTS) | ۴ آوریل ۲۰۱۷ | Last version to support Python 2.7. Supported until at least April 2020 |
۲٫۰ | ۲ دسامبر ۲۰۱۷ | First Python 3-only release, Simplified URL routing syntax, Mobile friendly admin |
۲٫۱ | ۱ اوت ۲۰۱۸ | Model "view" permission |
۲٫۲ پشتیبانی بلندمدت (LTS) | ۱ آوریل ۲۰۱۹ | Security release. Supported until at least April 2022 |
۳٫۰ | ۲ دسامبر ۲۰۱۹ | ASGI support |
۳٫۱ | ۴ اوت ۲۰۲۰ | Asynchronous views and middleware |
۳٫۲ پشتیبانی بلندمدت (LTS) | آوریل ۲۰۲۱ | Supported until at least April 2024 |
۴٫۰ | دسامبر ۲۰۲۱ | Extended Support until at April 2023 |
۴٫۱ | اوت ۲۰۲۲ | Extended Support until at December 2023 |
۴٫۲ پشتیبانی بلندمدت (LTS) | آوریل ۲۰۲۳ | Extended Support until at April 2026 |
ایجاز: نگارش قدیمی نگارش قدیمیتر، هنوز پشتیبانی میشود نگارش پایدار جاری آخرین نگارش پیشنمایش انتشار آتی |
پشتیبانی جنگو از ابزارهای توسعه
برای توسعه دادن پروژه جنگو خود، هیچ نیاز به ابزار خاصی ندارید و میتوانید با استفاده از ویرایشگر متنهای مرسوم کد منبع خود را توسعه دهید. با این حال ویرایشگر متنهایی بهطور مخصوص برای برنامهنویسی طراحی شدهاند که قابلیتهایی همچون برجستهسازی نحو را دارا هستند. با توجه به اینکه جنگو با استفاده از زبان پایتون نوشته میشود، استفاده ازویرایشگر متنهایی که از نحوه نوشتار پایتون پشتیبانی میکنند میتواند مفید باشد.
با استفاده از محیط یکپارچه توسعه نرمافزار(IDE) میتوانید قابلیتهایی مانند اشکالزدایی و بازسازی کد را حین توسعه برنامه خود استفاده کنید. همانند ویرایشگر متن ساده، محیط یکپارچه توسعه نرمافزار(IDE) که از پایتون پشتیبانی میکنند هم میتوانند برای توسعه مفید باشند. مقاله مرجع این مطلب رو ببینید:
انجمن
از سپتامبر سال ۲۰۰۸ تا به امروز، هر نیمسال کنفرانسی به نام «DjangoCon» برای توسعه دهندگان جنگو و کاربران آن برگزار میشود. همچنین کنفرانس «DjangoCon» سالیانه در ماه مه و ژوئن در اروپا و بهطور مشابه، در اوت و سپتامبر در شهرهای مختلف آمریکا برگزار میشود.
محل و تاریخ کنفرانسهای برگزار شده DjangoCon تا به امروز:
- از سوم تا هشتم سپتامبر سال ۲۰۱۲، در واشینگتن، دی.سی.
- سال ۲۰۱۳ در هتل Hyatt Regency شیکاگو و هکاتون پس از رویداد، در مرکز آموزش رایانه
- از سی ام اوت تا ششم سپتامبر سال ۲۰۱۴، در پورتلند
- از ششم تا یازدهم سال ۲۰۱۵، در مرکز اصلی ایتی اند تی(AT&T) شهر آستین، ایالت تگزاس
- از هفدهم تا بیست و دوم سال ۲۰۱۶، در مدرسه وارتون دانشگاه پنسیلوانیا شهر فیلادلفیا
- سال ۲۰۱۷، در شهر اسْپوکِین، ایالت واشینگتن
- سال ۲۰۱۸، شهر سن دیگو، ایالت کالیفرنیا
تبدیل به زبانهای برنامهنویسی دیگر
برنامه نویسان، قالب الگوی جنگو را از پایتون به زبانهای برنامهنویسی دیگر تبدیل کرده و از قابلیت چندسکویی نیز پشتیبانی میکنند. برخی از این موارد تبدیلهای مستقیم از جنگو هستند اما برخی دیگر، اگرچه از مفاهیم جنگو الهام گرفتهاند اما آزادی عمل برای تغیر دادن از ماهیت جنگو در آنها هموار شدهاست:
- «Liquid» برای روبی (زبان برنامهنویسی)
- الگو: «swig» برای پرل
- «Twig» برای پیاچپی و جاوا اسکریپت
- موتور نشانهگذاری جینجا برای پایتون (زبان برنامهنویسی)
- «ErlyDTL» برای ارلنگ
جستارهای وابسته
منابع
- ↑ "Django FAQ". Retrieved 27 March 2019.
- ↑ https://github.com/django/django/releases
- ↑ "Django Download". Retrieved 27 March 2019.
- ↑ "FAQ: General - Django documentation - Django". Retrieved 30 April 2016.
- ↑ "FAQ: General - Django documentation - Django". Retrieved 30 April 2016.
- ↑ Adrian Holovaty, Jacob Kaplan-Moss; et al. The Django Book. Archived from the original on 2 September 2016. Retrieved 11 October 2019.
Django follows this MVC pattern closely enough that it can be called an MVC framework
- ↑ "Design Philosophies". Django. Retrieved 18 March 2018.
- ↑ "20 Creative Websites Running Django". Archived from the original on 14 June 2013. Retrieved 11 اكتبر 2019.
- ↑ "What Powers Instagram: Hundreds of Instances, Dozens of Technologies".
- ↑ "Python". Mozilla Developer Network. Archived from the original on 8 February 2012. Retrieved 30 April 2016.
- ↑ Opensource.washingtontimes.com. Retrieved on 2014-05-30.
- ↑ "What is the technology stack behind Pinterest?". Retrieved 30 April 2016.
- ↑ «LJWorld.com / About us». دریافتشده در ۱۲ فروردین ۱۳۹۰.
- ↑ «Django FAQ». دریافتشده در ۱۲ مهر ۱۳۹۵.
- ↑ "Announcing the Django Software Foundation - Weblog - Django". Retrieved 30 April 2016.
- ↑ https://quera.org/blog/what-is-django/
- ↑ Django documentation of deployment بایگانیشده در ۱۱ ژانویه ۲۰۱۲ توسط Wayback Machine
- ↑ "Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation". Retrieved 30 April 2016.
- ↑ "Django non-rel". Retrieved 30 April 2016.
- ↑ beachmachine. "GitHub - beachmachine/django-jython: Database backends and extensions for Django development on top of Jython". GitHub. Retrieved 30 April 2016.
- ↑ "Django's release process - Django documentation - Django". Archived from the original on 6 March 2016. Retrieved 30 April 2016.
- ↑ "Download Django - Django". www.djangoproject.com.
- ↑ "FAQ: Installation - Django documentation - Django". docs.djangoproject.com.
- ↑ "Introducing Django 0.90". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 0.91 released". Django weblog. Retrieved 2 February 2013.
- ↑ "Introducing Django 0.95". Django weblog. Retrieved 2 February 2013.
- ↑ "Announcing Django 0.96!". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 1.0 released!". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 1.1 released". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 1.2 released". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 1.3 released". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 1.4 released". Django weblog. Retrieved 2 February 2013.
- ↑ "Django 1.5 released" Django weblog. Retrieved 27 February 2013.
- ↑ "Django 1.6 released" Django weblog. Retrieved 6 November 2013.
- ↑ "Django 1.7 released" Django weblog. Retrieved 4 September 2014.
- ↑ "Django 1.8 released" Django weblog. Retrieved 2 April 2015.
- ↑ "Django 1.9 released" Django weblog. Retrieved 1 December 2015.
- ↑ "Django 1.10 released" Django weblog. Retrieved 1 August 2016.
- ↑ "Django 1.11 released" Django weblog. Retrieved 4 April 2017.
- ↑ "Django 2.0 released" Django weblog. Retrieved 3 December 2017.
- ↑ "Django 2.1 released" Django weblog. Retrieved 2 August 2018.
- ↑ Django 2.2.3 release notes Retrieved 1 July 2019.
- ↑ [۱] retrived 2 December 2019.
- ↑ Download Django
- ↑ DjangoCon EU series بایگانیشده در ۴ مارس ۲۰۱۶ توسط Wayback Machine, Lanyrd.com
- ↑ DjangoCon US series بایگانیشده در ۲ آوریل ۲۰۱۶ توسط Wayback Machine, Lanyrd.com
- ↑ "DjangoCon". DjangoCon. Archived from the original on 5 August 2012. Retrieved 29 July 2012.
- ↑ "DjangoCon". DjangoCon.
- ↑ "DjangoCon". DjangoCon.
- ↑ "DjangoCon". DjangoCon.
- ↑ Shopify. "– Liquid template language". Liquid template language.
- ↑ "Template::Swig - Perl interface to Django-inspired Swig templating engine. - metacpan.org". metacpan.org.
- ↑ Symfony. "Home - Twig - The flexible, fast, and secure PHP template engine". twig.sensiolabs.org. Archived from the original on 9 July 2017. Retrieved 21 June 2021.
- ↑ "twigjs/twig.js". GitHub.
- ↑ "Welcome - Jinja2 (The Python Template Engine)". jinja.pocoo.org.
- ↑ "erlydtl/erlydtl". GitHub.