جنگو (چارچوب نرم‌افزاری)

از ویکی‌پدیا، دانشنامهٔ آزاد
جنگو (Django)
نویسنده(های)
اصلی
Adrian Holovaty,Simon Willison
توسعه‌دهنده(ها)Django Software Foundation
انتشار ابتدایی۲۱ ژوئیه ۲۰۰۵[۱]
انتشار پایدار
۳٫۰٫۸
۱ ژوئیه ۲۰۲۰[۲]
مخزن
نوشته‌شده باپایتون
سیستم‌عاملچندسکویی
حجم۸٫۶ مگابایت[۳]
گونهچارچوب نرم‌افزاری تحت وب
پروانهاجازه‌نامه بی‌اس‌دی
وبگاه

جنگو (به انگلیسی: Django)[۴] یک چارچوب نرم‌افزاری تحت وب آزاد و متن‌باز است که به زبان پایتون نوشته شده‌است و از معماری مدل-نما-قالب (به انگلیسی: Model–View–Template) پیروی می‌کند.[۵][۶] هدف اصلی جنگو ساخت آسان سایت‌های پیچیده و وابسته به دیتابیس است و بر پایهٔ قابلیت استفادهٔ مجدد و قابل اتصال بودن اجزای مختلف، توسعهٔ سریع و اصل خودت را تکرار نکن (DRY) طراحی شده‌است.[۷] جنگو سراسر از پایتون استفاده می‌کند، حتی برای تنظیمات، فایل‌ها و مدل‌های اطلاعات.

از وب‌سایت‌های مشهوری که از جنگو استفاده می‌کنند می‌توان به پی‌بی‌اس،[۸]اینستاگرام،[۹]بنیاد موزیلا،[۱۰]واشینگتن تایمز[۱۱] اشاره کرد. جنگو همچنین در ساخت شبکه اجتماعی پینترست[۱۲] استفاده شد اما بعداً، به فریم ورک فلسک انتقال یافت.

تاریخچه[ویرایش]

جنگو در پاییز سال ۲۰۰۳ توسط Simon Willison و Adrian Holovaty در حین ایجاد برنامه در شرکت Lawrence Journal-World متولد شد. سپس در سال ۲۰۰۵ تحت اجازه‌نامه بی‌اس‌دی منتشر شد.[۱۳] نام جنگو از جنگو راینهارت، نوازندهٔ گیتار جاز گرفته شده‌است.[۱۴]

در ژوئن سال ۲۰۰۸، بنیاد نرم‌افزاری Django Software Foundation (DSF) برای توسعه و حفظ جنگو شکل گرفت.[۱۵]

امکانات[ویرایش]

کامپوننت‌ها (اجزاء)[ویرایش]

هسته اصلی جنگو مبتنی بر معماری MVT است که شامل Model برای ارتباط با پایگاه داده، View و Template است.

همچنین در هسته فریم ورک جنگو امکانات زیر گنجانده شده:

  • وب سرور مستقل و داخلی برای توسعه و تست سریع برنامه
  • قابلیت اعتبارسنجی و ترتیب بندی، برای انتقال و ذخیره‌سازی اطلاعات فرم‌های اچ‌تی‌ام‌ال در پایگاه داده
  • سیستم قالب بندی صفحات با استفاده از مفهوم ارث بری که از برنامه‌نویسی شیءگرا الهام گرفته شده
  • پشتیبانی از کلاس‌های میان‌افزار که با استفاده از آن می‌توان توابع سفارشی برای پردازش درخواست‌های مراحل مختلف برنامه استفاده کرد
  • ابزاری برای بین‌المللی‌سازی و محلی‌سازی کامپوننت‌های جنگو به انواع زبان‌های برنامه‌نویسی دیگر
  • ابزاری برای خواندن زبان نشانه گذاری اکس‌ام‌ال یا نمایش جیسون از مدل‌های جنگو
  • ابزارهایی برای توسعه و گسترش موتور قالب بندی صفحات
  • استفاده از ابزار قدرتمند و انعطاف‌پذیر Django REST framework برای ساخت رابط برنامه‌نویسی کاربردی(API) وب

نرم‌افزارهای بسته‌بندی‌شده[ویرایش]

در توزیع اصلی جنگو تعداد زیادی بسته‌های نرم‌افزاری وجود دارد که شامل:

طبقه‌بندی وب سرور[ویرایش]

جنگو می‌تواند به راحتی با استفاده از وب سرورهایی همچون آپاچی، انجین‌اکس با به کار بردن واسط دروازه کارساز وب(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) که از پایتون پشتیبانی می‌کنند هم می‌توانند برای توسعه مفید باشند. مقاله مرجع این مطلب رو ببینید:

نحوه به‌کارگیری جنگو در رعایت اصول مهندسی نرم‌افزار[ویرایش]

چارچوب جنگو با ارائه‌ی امکانات و ابزارهای قدرتمندی، توسعه‌دهندگان را در رعایت اصول اساسی مهندسی نرم‌افزار یاری می‌رساند. به‌ویژه در زمینه‌های امنیت داده‌ها، جلوگیری از تکرار کد و تسهیل پیکربندی، جنگو با ارائه‌ی راه‌حل‌های نوآورانه، این اصول را به‌طور کارآمدی پیاده‌سازی می‌کند.

امنیت داده‌ها[ویرایش]

جنگو امنیت داده‌ها را با ارائه‌ی مکانیزم‌هایی همچون جلوگیری از حملات CSRF (Cross Site Request Forgery) و SQL Injection از طریق ORM (Object-Relational Mapping) خود به‌طور جدی تضمین می‌کند. همچنین، سیستم احراز هویت پیش‌فرض جنگو و سیاست‌های دسترسی قابل تنظیم، به مدیران سایت امکان می‌دهد تا داده‌های حساس را در برابر دسترسی‌های غیرمجاز محافظت نمایند.

جلوگیری از تکرار کد[ویرایش]

اصل DRY (Don't Repeat Yourself) یکی از اصول کلیدی در جنگو است که توسعه‌دهندگان را تشویق می‌کند تا از تکرار کد در پروژه‌های خود اجتناب کنند. جنگو با ارائه‌ی سیستم قالب‌بندی پیشرفته و امکان به‌اشتراک‌گذاری کد بین برنامه‌های مختلف، این امکان را فراهم می‌آورد که با کمترین تکرار کد، بیشترین بهره‌وری را از کدنویسی به دست آورد.

تسهیل پیکربندی[ویرایش]

جنگو با پیشنهاد رویکرد «Convention over Configuration» (ترجیح قرارداد نسبت به پیکربندی)، تلاش می‌کند تا تنظیمات پیش‌فرض منطقی و کاربردی را برای پروژه‌های توسعه نرم‌افزار ارائه دهد. این رویکرد به توسعه‌دهندگان اجازه می‌دهد تا بدون صرف زمان زیاد برای پیکربندی‌های اولیه، سریع‌تر به توسعه‌ی ویژگی‌های جدید بپردازند.

انجمن[ویرایش]

از سپتامبر سال ۲۰۰۸ تا به امروز، هر نیم‌سال کنفرانسی به نام «DjangoCon» برای توسعه دهندگان جنگو و کاربران آن برگزار می‌شود. همچنین کنفرانس «DjangoCon» سالیانه در ماه مه و ژوئن در اروپا[۴۴] و به‌طور مشابه، در اوت و سپتامبر در شهرهای مختلف آمریکا برگزار می‌شود.[۴۵]

محل و تاریخ کنفرانس‌های برگزار شده DjangoCon تا به امروز:

تبدیل به زبان‌های برنامه‌نویسی دیگر[ویرایش]

برنامه نویسان، قالب الگوی جنگو را از پایتون به زبان‌های برنامه‌نویسی دیگر تبدیل کرده و از قابلیت چندسکویی نیز پشتیبانی می‌کنند. برخی از این موارد تبدیل‌های مستقیم از جنگو هستند اما برخی دیگر، اگرچه از مفاهیم جنگو الهام گرفته‌اند اما آزادی عمل برای تغیر دادن از ماهیت جنگو در آن‌ها هموار شده‌است:

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. "Django FAQ". Retrieved 27 March 2019.
  2. https://github.com/django/django/releases
  3. "Django Download". Retrieved 27 March 2019.
  4. "FAQ: General - Django documentation - Django". Retrieved 30 April 2016.
  5. "FAQ: General - Django documentation - Django". Retrieved 30 April 2016.
  6. 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
  7. "Design Philosophies". Django. Retrieved 18 March 2018.
  8. "20 Creative Websites Running Django". Archived from the original on 14 June 2013. Retrieved 11 اكتبر 2019. {{cite web}}: Check date values in: |access-date= (help)
  9. "What Powers Instagram: Hundreds of Instances, Dozens of Technologies".
  10. "Python". Mozilla Developer Network. Archived from the original on 8 February 2012. Retrieved 30 April 2016.
  11. Opensource.washingtontimes.com. Retrieved on 2014-05-30.
  12. "What is the technology stack behind Pinterest?". Retrieved 30 April 2016.
  13. «LJWorld.com / About us». بایگانی‌شده از اصلی در ۲۳ مه ۲۰۱۷. دریافت‌شده در ۱۲ فروردین ۱۳۹۰.
  14. «Django FAQ». دریافت‌شده در ۱۲ مهر ۱۳۹۵.
  15. "Announcing the Django Software Foundation - Weblog - Django". Retrieved 30 April 2016.
  16. Django documentation of deployment بایگانی‌شده در ۱۱ ژانویه ۲۰۱۲ توسط Wayback Machine
  17. "Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation". Retrieved 30 April 2016.
  18. "Django non-rel". Retrieved 30 April 2016.
  19. beachmachine. "GitHub - beachmachine/django-jython: Database backends and extensions for Django development on top of Jython". GitHub. Retrieved 30 April 2016.
  20. "Django's release process - Django documentation - Django". Archived from the original on 6 March 2016. Retrieved 30 April 2016.
  21. "Download Django - Django". www.djangoproject.com.
  22. "FAQ: Installation - Django documentation - Django". docs.djangoproject.com.
  23. "Introducing Django 0.90". Django weblog. Retrieved 2 February 2013.
  24. "Django 0.91 released". Django weblog. Retrieved 2 February 2013.
  25. "Introducing Django 0.95". Django weblog. Retrieved 2 February 2013.
  26. "Announcing Django 0.96!". Django weblog. Retrieved 2 February 2013.
  27. "Django 1.0 released!". Django weblog. Retrieved 2 February 2013.
  28. "Django 1.1 released". Django weblog. Retrieved 2 February 2013.
  29. "Django 1.2 released". Django weblog. Retrieved 2 February 2013.
  30. "Django 1.3 released". Django weblog. Retrieved 2 February 2013.
  31. "Django 1.4 released". Django weblog. Retrieved 2 February 2013.
  32. "Django 1.5 released" Django weblog. Retrieved 27 February 2013.
  33. "Django 1.6 released" Django weblog. Retrieved 6 November 2013.
  34. "Django 1.7 released" Django weblog. Retrieved 4 September 2014.
  35. "Django 1.8 released" Django weblog. Retrieved 2 April 2015.
  36. "Django 1.9 released" Django weblog. Retrieved 1 December 2015.
  37. "Django 1.10 released" Django weblog. Retrieved 1 August 2016.
  38. "Django 1.11 released" Django weblog. Retrieved 4 April 2017.
  39. "Django 2.0 released" Django weblog. Retrieved 3 December 2017.
  40. "Django 2.1 released" Django weblog. Retrieved 2 August 2018.
  41. Django 2.2.3 release notes Retrieved 1 July 2019.
  42. [۱] retrived 2 December 2019.
  43. ۴۳٫۰ ۴۳٫۱ ۴۳٫۲ ۴۳٫۳ ۴۳٫۴ Download Django
  44. DjangoCon EU series بایگانی‌شده در ۴ مارس ۲۰۱۶ توسط Wayback Machine, Lanyrd.com
  45. DjangoCon US series بایگانی‌شده در ۲ آوریل ۲۰۱۶ توسط Wayback Machine, Lanyrd.com
  46. "DjangoCon". DjangoCon. Archived from the original on 5 August 2012. Retrieved 29 July 2012.
  47. "DjangoCon". DjangoCon.
  48. "DjangoCon". DjangoCon.
  49. "DjangoCon". DjangoCon.
  50. Shopify. "– Liquid template language". Liquid template language.
  51. "Template::Swig - Perl interface to Django-inspired Swig templating engine. - metacpan.org". metacpan.org.
  52. 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.
  53. "twigjs/twig.js". GitHub.
  54. "Welcome - Jinja2 (The Python Template Engine)". jinja.pocoo.org.
  55. "erlydtl/erlydtl". GitHub.

پیوند به بیرون[ویرایش]

وبسایت رسمی جنگو