آموزش جنگو

آنچه در این صفحه می خوانید:

معرفی جنگو (Django)

Django فریمورک وب رایگان و اوپن سورس مبتنی بر پایتون است، که از الگوی معماری model-template-view یا به اختصار MTV استفاده می کند. Django توسط مؤسسه توسط بنیاد نرم افزار (DSF) نگهداری می شود. هدف اصلی جنگو، سهولت در ایجاد وب سایت های پیچیده و پایگاه داده محور است. این فریمورک بر قابلیت استفاده مجدد و قابلیت اتصال به کامپوننت، کد نویسی کمتر، اتصال سست، توسعه سریع و اصل خودت را تکرار نکن (DRY) تأکید دارد.

جنگو به طور کلی از پایتون در سراسر فریمورک، حتی برای فایل های تنظیمات و مدل های داده استفاده می کند. Django همچنین رابط اجرایی ایجاد، خواندن، به روزرسانی و حذف را ایجاد می کند که به صورت پویا از طریق درون نگاری ایجاد می شود و از طریق مدل های ادمین پیکربندی می شود. با Django، می توانید برنامه های وب را از پایه در عرض چند ساعت راه اندازی کنید.

جنگو فریمورک توسعه وب است که در ایجاد و حفظ برنامه های کاربردی وب با کیفیت کمک می کند. جنگو وظایف تکراری را حذف می کند تا فرآیند توسعه را آسان و در مصرف زمان صرفه جویی کند. Django فریمورک وب سطح بالا در پایتون است که باعث طراحی وب تمیز، سریع و کارآمد می شود. با جنگو می توان به سرعت و به سهولت و با کدنویسی کمتر برنامه نویسی کرد. چرا که در آن کد های مربوط به model و controller یا bussiness logic و view از هم جدا می باشند. از آنجایی که این فریمورک توسط زبان پایتون نوشته شده است پس دارای ویژگی های این زبان نیز می باشد. جنگو سهولت در تعریف متغیر ها، متا پروگرمینگ (meta-programming) و امنیت بالایی را فراهم می سازد.

تاریخچه جنگو (Django)

جنگو در پاییز سال 2003 ایجاد شد، هنگامی که برنامه نویسان وب در روزنامه لارنس ژورنال، آدریان هولوواتی و سیمون ویلیسون، استفاده از پایتون را برای ساختن برنامه های کاربردی شروع کردند. کمی قبل از پایان دوره کارآموزی سیمون ویلیسون، جاکوب کاپلان در مراحل اولیه توسعه جنگو بود و در ژوئیه 2005 تحت مجوز BSD منتشر شد. این فریمورک به نام گیتاریست Django Reinhardt نامگذاری شد.

در ژوئن سال 2008 اعلام شد که بنیاد تازه تاسیس نرم افزار جنگو (DSF) در آینده راهبری جنگو را به عهده می گیرد. در ژوئیه سال 2015، Revolution Systems، شرکت مشاوره نرم افزاری متصل به برخی از بنیانگذاران و توسعه دهندگان Django، میزبان رویدادهای 10 ساله در لارنس بود.

جنگو به رشد و پیشرفت خود ادامه داده است، از اولین انتشار مهم خود (1.0) در سپتامبر 2008 تا نسخه 3.1 (2020) که منتشر شده است. هر نسخه عملکرد جدید و رفع اشکال را شامل می شود، از پشتیبانی از انواع جدید پایگاه داده ها، موتورهای الگو و حافظه پنهان یا کش، تا اضافه شدن توابع و کلاس های "عمومی" که باعث کاهش کد مورد نیاز توسعه دهندگان برای نوشتن می شود.

جنگو از چه میزان محبوبیتی برخوردار است؟

هیچ سنجشی به آسانی در دسترس و قطعی از محبوبیت چارچوب های سمت سرور وجود ندارد. اگرچه می توانید محبوبیت را با استفاده از مکانیزمی مانند شمارش تعداد پروژه های GitHub و سوالات StackOverflow برای هر سیستم عامل تخمین بزنید. یک سوال بهتر این است که آیا جنگو "به اندازه کافی محبوب است" تا از مشکلات سیستم عامل های غیر محبوب جلوگیری کند؟ آیا همچنان به تکامل خود ادامه می دهد؟ در صورت نیاز می توانید از آن کمک بگیرید؟ آیا در صورت یادگیری جنگو فرصتی برای دریافت شغل و درآمد برای شما وجود دارد؟

بر اساس تعداد سایت های پر مخاطب که از جنگو استفاده می کنند، تعداد افرادی که در codebase همکاری می کنند و تعداد افرادی که هم به صورت رایگان و هم پولی پشتیبانی می کنند، بله، جنگو یک چارچوب محبوب است!

برای اثبات این امر لیست برخی از سایت هایی که از جنگو استفاده کرده اند را برایتان فهرست کرده ایم:

  • Disqus
  • Instagram
  • Knight Foundation
  • MacArthur Foundation
  • Mozilla
  • National Geographic
  • Open Knowledge Foundation
  • Pinterest
  • Open Stack

فلسفه طراحی جنگو (Django)

هدف اصلی جنگو، سهولت در ایجاد وب سایت های پیچیده و پایگاه داده محور است. این فریمورک بر قابلیت استفاده مجدد و قابلیت اتصال به کامپوننت، کد نویسی کمتر، اتصال سست، توسعه سریع و اصل خودت را تکرار نکن (DRY) تأکید دارد. در سراسر فریمورک از پایتون، حتی برای فایل های تنظیمات و مدل های داده استفاده می شود.

  • اتصال سست

هدف اساسی پشته جنگو اتصال و انسجام قوی است. لایه های مختلف فریمورک نباید درباره یکدیگر "بدانند"، مگر اینکه کاملاً ضروری باشد. به عنوان مثال، سیستم تمپلیت از درخواست های وب چیزی نمی داند، لایه بانک اطلاعاتی چیزی در مورد نمایش داده نمی داند و سیستم ویو اهمیتی نمی دهد که برنامه نویس از کدام سیستم تمپلیت استفاده می کند. اگرچه جنگو برای راحتی بیشتر از یک پشته کامل برخوردار است، اما ممکن است هر قسمت از کامپوننت های پشته مستقل از یکدیگر عمل کنند.

  • کد تمیز

برنامه های جنگو باید تا حد امکان از کد تمیز استفاده کنند. جنگو از قابلیت های پویای پایتون مانند introspection استفاده می کند.

  • توسعه سریع

نکته حائز اهمیت یک فریمورک وب در قرن بیست و یکم این است که بتواند جنبه های خسته کننده توسعه وب را سریع انجام دهد. جنگو توسعه فوق العاده سریع وب را فراهم می کند.

  • خود را تکرار نکنید (DRY)

هر مفهوم و یا کامپوننت مشخص از داده ها باید تنها در یک مکان باشد. جنگو وظایف تکراری را حذف می کند تا فرآیند توسعه را آسان و در زمان صرفه جویی کند و می توان با کدنویسی کمتر برنامه نویسی کرد.

جنگو و پایتون

ویژگی های جنگو (Django)

کامپوننت ها

فریمورک اصلی جنگو را می توان به عنوان معماری MVC مشاهده کرد که شامل نقشه بردار رابطه ای شیء (ORM) است. واسطه ای بین مدل های داده (تعریف شده به عنوان کلاس های پایتون) و بانک اطلاعاتی رابطه ای ("Model")، سیستمی برای پردازش درخواست های HTTP با سیستم قالب وب ("View")، و توزیع کننده URL مبتنی بر بیان به طور منظم ("Controller").

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

  • وب سرور سبک و مستقل برای توسعه و تست
  • سیستم سریال سازی و اعتبار سنجی فرم که می تواند بین فرم های HTML و مقادیر مناسب برای ذخیره سازی در دیتابیس را ترجمه کند.
  • سیستم تمپلیت که از مفهوم وراثت سرچشمه گرفته و از برنامه نویسی شی گرا استفاده می کند.
  • فریمورک ذخیره سازی که می تواند از هر یک از چندین روش حافظه پنهان استفاده کند.
  • پشتیبانی از کلاس های میان افزار که می توانند در مراحل مختلف پردازش درخواست مداخله کنند و عملکرد های سفارشی را انجام دهند.
  • سیستم توزیع کننده داخلی که به اجزای برنامه اجازه می دهد تا از طریق سیگنال های از پیش تعریف شده، رویدادها را به یکدیگر ارتباط دهند.
  • سیستم بین المللی سازی، از جمله ترجمه مؤلفه ای خود Django به زبان های مختلف
  • سیستم سریال سازی که می تواند نمایش های اکس ام ال (XML) و یا جی سان (JSON) نمونه های مدل جنگو را تولید و مطالعه کند.
  • سیستمی برای گسترش قابلیت های موتور تمپلیت
  • رابط کاربری فریمورک تست واحد داخلی پایتون
  • جنگو رست فریمورک (Django REST) ابزاری قدرتمند و انعطاف پذیر برای ساختن API های وب است.

برنامه های پکیج شده

توزیع اصلی جنگو تعدادی برنامه را شامل می شود، از جمله:

  • سیستم تأیید گسترده
  • رابط مدیریتی پویا
  • ابزاری برای تولید فیدهای RSS و Atom
  • "Sites" به Django اجازه می دهد چندین وب سایت را اجرا کند که هرکدام محتوا و برنامه های خاص خود را دارند.
  • ابزاری برای تولید نقشه های Google
  • built-in mitigation برای درخواست های جعلی Cross-platform، تزریق کد SQL و password cracking و سایر حملات وب معمولی، که اکثر آن ها بصورت پیش فرض فعال شده اند.
  • فریمورکی برای ایجاد برنامه های GIS

قابلیت توسعه

سیستم پیکربندی Django اجازه می دهد تا کد شخص ثالث به پروژه عادی وصل شود، مشروط بر اینکه پیرو قراردادهای برنامه قابل استفاده مجدد باشد. بیش از 2500 بسته در دسترس است تا رفتار اصلی این فریمورک را ارائه دهد و راه حل هایی را برای نسخه اصلی ارائه می دهد: ثبت نام، جستجو، تهیه و استفاده API،CMS و غیره.

در این صورت، وابستگی اجزای داخلی کاهش می یابد. در حالی که فلسفه Django به معنای جفت شدن بدون قاعده است، فیلترها و برچسب ها قالب اجرای موتور را انجام می دهند و هر دو برنامه های auth و bundled admin به استفاده از ORM داخلی نیاز دارند. هیچکدام از این فیلترها یا برنامه های bundled برای اجرای پروژه Django الزامی نیستند، اما برنامه های قابل استفاده مجدد به آنها بستگی دارند و توسعه دهندگان را ترغیب می کنند با استفاده از پشته، به منظور بهره مندی کامل از اکوسیستم برنامه ها ادامه دهند.

تنظیم سرور

Django را می توان با همراهی Apache،Nginx با استفاده از WSGI،Gunicorn یا Cherokee با استفاده از flup (ماژول پایتون) اجرا کرد. Django همچنین شامل قابلیت راه اندازی سرور FastCGI، امکان استفاده در پشت سرور وب که از FastCGI پشتیبانی می کند، مانند Lighttpd یا Hiawatha است. همچنین می توان از سایر سرورهای وب سازگار با WSGI استفاده کرد.

Django رسما از چهار پایگاه داده با سابقه پشتیبانی می کند: پستگرس کیوال (PostgreSQL)، مای اس کیوال (MySQL)، اس کیو ال (SQLite) و اوراکل (Oracle). اس کیوال سرور (SQL Server) را می توان با سیستم عامل Django-MySQL در سیستم عامل های مایکروسافت استفاده کرد، در حالی که به طور مشابه پشتوانه های خارجی نیز برای IBM Db2،SQL Anywhere و Firebird وجود دارد. انشعابی به نام django-nonrel وجود دارد که از پایگاه داده های NoSQL مانند مانگو دی بی (MongoDB) و Datastore Google App Engine پشتیبانی می کند.

Django همچنین ممکن است در رابطه با Jython در هر سرور برنامه Java EE مانند GlassFish یا JBoss اجرا شود. در این حالت، django-jython باید به منظور فراهم آوردن درایورهای JDBC برای اتصال بانک اطلاعاتی نصب شود، همچنین می تواند عملکرد لازم برای کامپایل کردن جنگو را در جنگ داخلی مناسب برای استقرار فراهم کند.

پشتیبانی از ORM

جنگو پل بین مدل داده و موتور پایگاه داده را فراهم می کند و از مجموعه بزرگ از سیستم های پایگاه داده شامل MySQL، اوراکل، PostgreSQL و غیره پشتیبانی می کند. همچنین از پایگاه داده نو اس کیو ال (NoSQL) از طریق چنگال Django-nonrel پشتیبانی می کند. در حال حاضر، تنها پایگاه داده های NoSQL که پشتیبانی می شوند MongoDB و google app engine است.

چند زبانه

جنگو از طریق سیستم بین المللی سازی خود از وب سایت های چند زبانه پشتیبانی می کند. بنابراین شما می توانید وب سایتی را توسعه دهید که از چندین زبان پشتیبانی می کند.

پشتیبانی از فریمورک

جنگو از ای جکس (Ajax)، RSS،Caching و سایر فریمورک های دیگر پشتیبانی می کند.

مدیریت GUI

جنگو رابط کاربری مناسب برای فعالیت های مدیریتی فراهم می کند.

محیط توسعه

جنگو وب سرور سبک وزن برای تسهیل تست و توسعه اپلیکیشن های end-to-end ارائه می دهد.

پشتیبانی از سرور

جنگو از سرورهای Apache با استفاده از ماژول mod_python، از تمامی سرورهای WSGI،SQLite،PostgreSQL،Oracle و MySQL را پشتیبانی می کند.

مزایای جنگو

مزایای جنگو (Django)

  • اکوسیستم غنی

توسعه دهندگان می گویند جنگو را مانند یک سیستم در نظر بگیرید. منظور آنها این است که بسیاری از برنامه های شخص ثالث وجود دارد که همراه با جنگو هستند. این برنامه ها بسته به نیاز پروژه می توانند یکپارچه شوند. جنگو شامل بسیاری از برنامه ها - مانند مجوز و ارسال ایمیل - است که به راحتی می توانید به یک سیستم وصل شوید.

  • بلوغ نرم افزاری

جنگو حدود 11 سال است که ایجاد شده و مراحل پیشرفت قابل توجهی را پشت سر گذاشته است. موارد زیادی به کمال رسیده و موارد جدید دیگری نیز به آن اضافه شده است. اگر دنبال راه حلی برای مشکل خود باشید ممکن است هزاران نفر قبلاً آن را حل کرده باشند، در نتیجه می توانید راه حل های ارائه شده را توسط جامعه پرشور جنگو پیدا کنید.

  • پنل مدیریت پیش فرض

پنل های مدیریتی برای کمک به شما در مدیریت برنامه خود طراحی شده اند. پنل ادمین Django به طور خودکار از کد پایتون تولید می شود، در حالی که ایجاد یک پنل مدیریت به صورت دستی زمان زیادی می برد و کاملاً بی معنی است.

به لطف برنامه های شخص ثالث، در پنل مدیریت Django فضای زیادی برای سفارشی سازی وجود دارد. علاوه بر این، Django به شما امکان می دهد تا رابط کاربری را با لپ تاپ های شخص ثالث اصلاح کنید و داشبورد بی نظیر برای نیازهای خود اضافه کنید.

  • مناسب برای SEO

پایتون به داشتن کد نزدیک به زبان انسان مشهور است و اگر می خواهید سایت شما در نتایج جستجو رتبه بالایی داشته باشد. با استفاده از Django، می توانید URL ها و لینک های وب سایت را با استفاده از مناسب ترین کلمات کلیدی و بهینه سازی موتور جستجو (SEO) بهترین شیوه ها تولید کنید.

  • توسعه پذیر

جنگو می تواند با افزونه ها گسترش یابد. افزونه ها مؤلفه های نرم افزاری هستند که به توسعه دهندگان امکان می دهد ویژگی خاصی را به یک برنامه اضافه و زمینه شخصی سازی زیادی را فراهم کنند. صدها بسته برای کمک به شما در اضافه کردن Google Maps، ایجاد مجوزهای پیچیده یا اتصال به Stripe برای پردازش پرداخت ها وجود دارد. اگر نیاز دارید پروژه خود را در آینده مقیاس گذاری کنید، می توانید برخی از مؤلفه ها را جدا کرده و آنها را با سایر مواردی که نیازهای فعلی شما را برآورده می کنند جایگزین کنید.

  • کتابخانه ها

هر زبان برنامه نویسی همراه با مجموعه ای از کتابخانه ها برای حل کارهای مشترک است. یک کتابخانه شامل کد پیش نویس، کلاس ها، رویه ها، اسکریپت ها، داده های پیکربندی و موارد دیگر است. به عنوان یک قاعده، کتابخانه برای فراهم کردن قابلیت های بیشتر یا اتوماسیون یک فرآیند بدون نوشتن دستی کد جدید، به برنامه اضافه می شود. این باعث کاهش زمان عرضه به بازار می شود.

جنگو به توسعه دهندگان اجازه می دهد هنگام ساختن هر پروژه از کتابخانه ها استفاده کنند. برخی از كتابخانه های معروف شامل فریمورک Django REST، كه مسئول ایجاد رابط های برنامه نویسی برنامه (API) است. Django CMS، که برای مدیریت محتوای وب سایت طراحی شده است. و Django-allauth، که مجموعه ای یکپارچه از برنامه های جنگو برای احراز هویت، ثبت نام، مدیریت حساب و تأیید اعتبار حساب شخص ثالث است.

  • Django ORM

جنگو به دلیل نگاشت مدل اشیاء به مدل رابطه‌ ای یا (Object-Relational Mapping) خود که به توسعه دهندگان در تعامل با پایگاه داده کمک می کند، ارزش دارد. ORM کتابخانه ای است که داده های ذخیره شده در پایگاه های داده مانند PostgreSQL و MySQL را به اشیاء متداول در کد برنامه انتقال می دهد.

آموزش

توانایی Django ORM جهت استخراج اطلاعات باعث تسریع در توسعه برنامه های وب می شود و به توسعه دهندگان کمک می کند تا در هر زمان دیگر نمونه های کاری را بسازند. توسعه دهندگان لزوماً برای دستکاری داده ها نباید از زبان مورد استفاده در ارتباط بانک اطلاعاتی بدانند.

علاوه بر این، Django ORM به توسعه دهندگان کمک می کند تا بین داده های رابطه ای با حداقل تغییر کد، تغییر ایجاد کنند. این به شما امکان می دهد از SQLite برای توسعه لوکال استفاده کنید و به عنوان مثال برای ساخت برنامه از MySQL استفاده کنید. با این حال، به طور کلی بهتر است که از یک بانک اطلاعاتی واحد استفاده شود تا از خطاهایی که ممکن است هنگام انتقال رخ دهند، جلوگیری شود.

  • اتصال بهتر CDN و مدیریت محتوا

این ویژگی یکی از دلایلی است که شرکت های نوظهور و خدمات اجتماعی مانند اینستاگرام به دلیل در دسترس نبودن کنترل بیشتر بر روی CDN ها، در درجه اول از Django استفاده می کنند.

CDN چیزی نیست جز Content Delivery Networks، همانطور که از این نام وجود دارد، آنها سرورهای خاصی هستند که دارای چندرسانه ای و محتوا هستند و سایت هایی مانند Netflix و Amazon Prime برای لایو استریم استفاده می کنند. این سرورها فقط حاوی فایل های چندرسانه ای و منابع برای صفحه وب شما هستند، زیرا از لحاظ جغرافیایی در نزدیکی مشتری قرار دارند، بنابراین می توانند با سرعت بیشتری به محتوا بپردازند و در نتیجه، رضایت مشتری را افزایش دهند.

Django به دلیل داشتن رابط کاربری عالی Admin، کتابخانه ها و توسعه دهندگان را برای استفاده از آن به عنوان CMS (سیستم مدیریت محتوا) فراهم می کند، که تنظیم و اجرای CDN را بسیار آسان می کند.

سایت ها از CDN های بسیار زیاد استفاده می کنند زیرا به شما محتوای چندرسانه ای، مانند YouTube، Instagram، Google و غیره را ارائه می دهند.

  • پردازش سریع

این مزیت نسبت به سایر فریمورک های دیگر مناسب است زیرا معماری Django با سایر فریمورک های دیگر در صنعت متفاوت است. این بدان معناست که Django از معماری MTV استفاده می کند که باعث می شود کل فرآیند انتقال از طریق اینترنت آسان و سریع شود زیرا منابع در CDN قرار می گیرند. سرور Django همه چیز را به خوبی مدیریت می کند، ضمن اینکه سرعت را نیز حفظ می کند. معماری جنگو با سایر فریمورک ها تفاوت های اساسی دارد.

  • امنیت

فریمورک جنگو توسط بهترین توسعه دهندگان وب جهان که تجربه و دانش خوبی دارند ساخته شده است. بنابراین، در سیستم تأیید هویت کاربر، احتمال مشکلات امنیتی بسیار کمی را به همراه دارد.

فریمورک لاراول در پی اچ پی داده ها را با استفاده از روش GET منتقل می کند و حتی کلمه عبور هایی که وارد می کنیم قابل مشاهده است که احتمال خطر را بالا می برد، اما جنگو به صورت داخلی از داده مراقبت می کند. همچنین برای انتقال اطلاعات از متد Get استفاده می کند اما کلمه عبور و کلیه اطلاعات مهم به طور خودکار با کلید امنیتی طولانی رمزگذاری می شوند. حتی در پایگاه داده Django، ما نمی توانیم رمز را ببینیم.

جنگو به توسعه دهندگان کمک می کند تا با ارائه فریمورکی که برای "انجام کارهای صحیح" جهت محافظت خودکار از وب سایت طراحی شده است، از بسیاری از اشتباهات امنیتی رایج جلوگیری کنند. به عنوان مثال، جنگو یک روش ایمن برای مدیریت حساب های کاربری و رمزهای عبور کاربر، جلوگیری از اشتباهات رایج مانند قرار دادن اطلاعات session در کوکی ها در جایی که آسیب پذیر هستند یا ذخیره مستقیم رمزهای عبور، به جای هش رمز عبور اجتناب می کند.

هش رمز عبور یک مقدار با طول ثابت است که با ارسال رمز عبور از طریق یک تابع هش رمزنگاری ایجاد می شود. Django می تواند با اجرای رمز ورود خود از طریق تابع هش و مقایسه خروجی با مقدار هش ذخیره شده، درست بودن رمز ورود را بررسی کند. با این وجود به دلیل ماهیت "یک طرفه" بودن عملکرد، حتی اگر مقدار هش ذخیره شده به خطر بیفتد، یک رمز عبور اصلی و دشوار برای یک مهاجم است.

جنگو به طور پیش فرض از بسیاری از آسیب پذیری ها، از جمله تزریق SQL، برنامه نویسی بین سایت، جعل درخواست بین سایت و کلیک کردن محافظت می کند.

  • داشتن برنامه ای کامل با جنگو

جنگو از فلسفه "شامل باتری ها" پیروی می کند و تقریباً همه کارهایی را که ممکن است توسعه دهندگان بخواهند "out of the box" انجام دهند فراهم می کند. از آنجا که هر آنچه شما نیاز دارید بخشی از یک "محصول" واحد است، همه آنها به طور یکپارچه با هم کار می کنند، از اصول طراحی سازگار پیروی می کنند و مستندات گسترده و به روز دارند.

  • همه کاره

از جنگو می توان تقریباً برای ساختن هر نوع وب سایتی (از سیستم های مدیریت محتوا و ویکی ها گرفته تا شبکه های اجتماعی و سایت های خبری) استفاده کرد. این برنامه می تواند با هر چارچوب سمت مشتری کار کند و می تواند تقریباً در هر قالب (از جمله HTML ، RSS ، JSON ، XML و غیره) محتوایی را ارائه دهد. در داخل، گرچه تقریباً برای هر عملکردی که بخواهید گزینه هایی را برای شما فراهم می کند (به عنوان مثال چندین پایگاه داده معروف، موتورهای templating و غیره) ، اما در صورت لزوم می توان از سایر اجزای آن نیز استفاده کرد.

  • مقیاس پذیر

جنگو از معماری کامپوننت محور" shared-nothing" استفاده می کند. هر قسمت از معماری مستقل از قسمت های دیگر است و بنابراین می تواند در صورت لزوم جایگزین شود یا تغییر کند. وجود یک تفکیک واضح بین قسمت های مختلف به این معنی است که می تواند با افزودن سخت افزار در هر سطح برای افزایش سرورهای ذخیره، سرورهای پایگاه داده یا سرورهای برنامه، مقیاس پذیری را فراهم کند. 2 مورد از سایت هایی که جنگو را مقیاس بندی کرده اند تا خواسته های آنها را برآورده کند Instagram و Disqus نام دارد.

  • قابل نگهداری

کد جنگو با استفاده از اصول و الگوهای طراحی نوشته می شود که ایجاد کد قابل نگهداری و قابل استفاده مجدد را تشویق می کند. به طور خاص، این امر از اصل "تکرار نکنید" (DRY) استفاده می کند بنابراین هیچ کپی غیرضروری وجود ندارد، و میزان کد را کاهش می دهد. جنگو همچنین گروه بندی قابلیت های مرتبط را به "برنامه های" قابل استفاده مجدد ارتقا می دهد و در سطح پایین، کد مربوطه را به ماژول ها تقسیم می کند (در امتداد خط الگوی Model View Controller (MVC)).

  • قابل حمل

جنگو در پایتون نوشته شده است، که در بسیاری از سیستم عامل ها اجرا می شود. این بدان معناست که شما به هیچ بستر سرور خاصی متصل نیستید و می توانید برنامه های خود را بر روی بسیاری از نسخه های لینوکس، ویندوز و Mac OS X اجرا کنید. بعلاوه، Django توسط بسیاری از ارائه دهندگان میزبانی وب، که اغلب زیرساخت های خاص و مستندات میزبانی سایت های جنگو پشتیبانی می شود.

ساختار جنگو (Django)

جنگو براساس معماری MVT (Model-View-Temple) بنا شده است. MVT یک الگوی طراحی نرم افزار برای توسعه یک برنامه وب است.

MVT Structure دارای سه بخش زیر است:

مدل (Model): مدل به عنوان واسط داده های شما عمل می کند و مسئول حفظ داده ها است.مدل ساختار داده های منطقی در بک اند کل برنامه است و توسط بانک اطلاعاتی ارائه می شود.

ویو (View): ویو رابط کاربری است - آنچه را در هنگام ارائه وب سایت در مرورگر خود مشاهده می کنید. این فایل ها توسط فایل های HTML / CSS / Javascript و Jinja نشان داده شده است.

الگو (Template): الگو متشکل از بخش های استاتیک از خروجی HTML مورد نظر و همچنین برخی از نحو های ویژه که چگونگی درج محتوای پویا را توصیف می کند.

ابزارهای توسعه با پشتیبانی جنگو (Django)

برای توسعه یک پروژه جنگو، هیچ ابزار خاصی لازم نیست، زیرا سورس کد را می توان با هر ویرایشگر متن معمولی ویرایش کرد. با این وجود، ویراستاران متخصص در برنامه نویسی رایانه می توانند به افزایش بهره وری توسعه کمک کنند. به عنوان مثال، با ویژگی هایی مانند برجسته سازی سینتکس به این امر کمک می کند. از آنجا که جنگو در پایتون نوشته شده است، ویرایشگر های متنی که از سینتکس پایتون آگاه هستند از این نظر سودمند هستند.

محیط های توسعه یکپارچه (IDE) قابلیت های بیشتری مانند اشکال زدایی، بازسازی و تست واحد را به آن اضافه می کنند. همانند ویرایشگرهای ساده، IDE هایی که از پایتون پشتیبانی می کنند می توانند مفید باشند. برخی از IDE های حرفه ای در پایتون علاوه بر این از پروژه های جنگو پشتیبانی یکپارچه دارند، بنابراین استفاده از چنین IDE در هنگام توسعه یک پروژه جنگو می تواند به افزایش بیشتر بهره وری کمک کند.

محیط توسعه جنگو (Django)

آموزش کامل جنگو

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

ابزارهای جانبی دیگری نیز وجود دارد که بخشی از محیط توسعه را تشکیل می دهند، که در اینجا به آنها نمی پردازیم. این موارد شامل مواردی مانند ویرایشگر متن یا IDE برای ویرایش کد، و یک ابزار مدیریت کنترل منبع مانند Git برای مدیریت ایمن نسخه های مختلف کد شما است. ما فرض می کنیم که شما قبلاً یک ویرایشگر متن نصب کرده اید.

از چه سیستم عاملی پشتیبانی می شود؟

برنامه های وب Django را می توان تقریباً در هر دستگاهی که بتواند زبان برنامه نویسی Python 3 را اجرا کند، پیاده سازی کرد: ویندوز، macOS، Linux / Unix، Solaris. تقریباً هر رایانه باید عملکرد لازم را برای اجرای جنگو در حین توسعه داشته باشد.

از چه نسخه ای از پایتون استفاده می شود؟

توصیه می شود از جدیدترین نسخه موجود استفاده کنید. در صورت لزوم از پایتون 3.5 یا بالاتر می توان استفاده کرد (پشتیبانی از پایتون 3.5 در نسخه های بعدی کاهش می یابد).

از کدام نسخه جنگو استفاده کنیم؟

Django یک چارچوب وب محبوب و پرطرفدار برای پایتون است که به شما در ساخت یک برنامه وب کمک می کند. از کدام نسخه جنگو استفاده کنید؟ اگر یک برنامه وب Django را شروع می کنید ، از آخرین نسخه موجود جنگو استفاده کنید. چرا؟ زیرا:

  • شما منابع یادگیری آنلاین را پیدا کرده اید که در آنها نسخه های مختلف جنگو ذکر شده است.
  • صفحه بارگیری پروژه Django اطلاعات زیادی در مورد نسخه های مختلف دارد.

بنابراین، این دلیل اصلی است که شما باید از آخرین نسخه استفاده کنید:

جنگو یک چارچوب وب بسیار بالغ است (اولین بار در سال 2005 منتشر شد) که بسیار پایدار است.

این ثبات چه شرایطی را برای شما فراهم می کند؟

نسخه های مدرن جنگو در فواصل بسیار منظمی منتشر می شوند. این فاصله خیلی سریع نیست. برخلاف برخی دیگر از کتابخانه های موجود، به روزرسانی آن خسته کننده نیست. نسخه های جدید جنگو هنگام بروزرسانی موانع بسیار کمی دارند. این سودی است که شما از یک پروژه پخته و پایدار می گیرید.

همه اینها بدان معناست که شما وقت کمتری را صرف تمرکز بر انتخاب ابزار وب چارچوب و زمان بیشتری را صرف تمرکز روی برنامه وب خود می کنید.

نسخه 3 جنگو

نسخه 3 جنگو شامل ویژگی های جدید و همچنین برخی تغییرات سازگار است که هنگام ارتقا از Django 2.2 یا نسخه های قبلی باید از آن اطلاع داشته باشید. برخی از ویژگی هایی که به پایان چرخه استهلاک خود رسیده و حذف شده اند و روند استرداد برخی ویژگی ها نیز شروع شده اند

  1. سازگاری در پایتون

Django 3.0 از پایتون 3.6، 3.7، 3.8 و 3.9 پشتیبانی می کند که تیم جنگو از جدیدترین نسخه این مجموعه را توصیه می کند و فقط از آن پشتیبانی می کند.

  1. پشتیبانی از کتابخانه شخص ثالث برای نسخه قدیمی جنگو

پس از انتشار Django 3.0، پیشنهاد ما این است که نویسندگان برنامه های شخص ثالث پشتیبانی از همه نسخه های جنگو را قبل از نسخه 2.2 رها کنند. پس از نصب نسخه 3 و انجام اصلاحات، برنامه شما باید با Django 3.0 سازگار باشد.

موارد جدید در Django 3.0

  1. پشتیبانی از MariaDB

اکنون جنگو رسماً از MariaDB 10.1 و بالاتر پشتیبانی می کند.

  1. پشتیبانی از ASGI

Django 3.0 با ارائه پشتیبانی برای اجرای برنامه ASGI، سفر ما را برای ایجاد قابلیت همزمان سازی همزمان جنگو آغاز می کند.

این مورد علاوه بر پشتیبانی موجود WSGI است. جنگو قصد دارد برای آینده از هر دو پشتیبانی کند. ویژگی های Async فقط برای برنامه هایی که تحت ASGI اجرا می شوند در دسترس خواهد بود.

در این مرحله، پشتیبانی از async فقط برای برنامه خارجی ASGI اعمال می شود. با این وجود می توانید از میان افزار ASGI در اطراف برنامه Django استفاده کنید، به شما این امکان را می دهد که جنگو را با سایر فریمورک های ASGI ترکیب کنید. نیازی به تغییر برنامه های خود ندارید مگر اینکه بخواهید آزمایش کد ناهمزمان را شروع کنید.

توجه داشته باشید که به عنوان یک عارضه جانبی از این تغییر، اکنون جنگو از حلقه های رویداد ناهمزمان آگاه است و شما را از تماس با کدی که با عنوان "همگام سازی ناامن" علامت گذاری شده است - مانند عملیات ORM - از یک زمینه ناهمگن جلوگیری می کند.

اگر قبلاً از جنگو از کد async استفاده می کردید، اگر این کار را اشتباه انجام داده باشید، ممکن است باعث بروز مشکل شود. اگر یک خطای SynchronousOnlyOperation مشاهده کردید، کد خود را از نزدیک بررسی کرده و هرگونه عملیات پایگاه داده را برای قرار دادن در یک synchronous child thread انتقال دهید.

  1. محدودیت های حذف در PostgreSQL

کلاس جدید ExclusiveConstraint امکان اضافه کردن محدودیت های حذف در PostgreSQL را فراهم می کند. محدودیت ها با استفاده از گزینه Meta.constraints به مدل ها اضافه می شوند.

  1. فیلتر کردن عبارات (expressions)

عباراتی که از BooleanField خروجی می گیرند اکنون می توانند مستقیماً در فیلترهای QuerySet استفاده شوند، بدون اینکه ابتدا حاشیه نویسی کنید و سپس در مقابل حاشیه فیلتر کنید.

  1. شمارش برای انتخاب رشته مدل model

انواع شمارش گر سفارشی TextChoices، IntegerChoices و Choices اکنون به عنوان راهی برای تعریف Field.choices در دسترس هستند. انواع TextChoices و IntegerChoices برای زمینه و متن درست است. کلاس Choices امکان تعریف شمارش سازگار برای انواع داده های دیگر را فراهم می کند. این نوع شمارش های سفارشی از تگ های قابل خواندن توسط انسان پشتیبانی می کنند که می توانند از طریق ویژگی موجود در شمارش یا اعضای آن ترجمه و دسترسی پیدا کنند.

  1. ویژگی های جزئی
  • پشتیبانی از ویژگی admin_order_field از ویژگی ها در ModelAdmin.list_display اضافه شده است.
  • روش جدید ()ModelAdmin.get_inlines اجازه می دهد تا خطوط را بر اساس درخواست یا نمونه مدل تعیین کنید.
  • کتابخانه Select2 از نسخه 4.0.3 به 4.0.7 ارتقا یافته است.
  • jQuery از نسخه 3.3.1 به 3.4.1 ارتقا یافته است.
  1. API بک اند پایگاه داده

این بخش تغییراتی را که ممکن است در باطن پایگاه داده شخص ثالث مورد نیاز باشد، توصیف می کند.

  1. django.contrib.gis
  • پشتیبانی از PostGIS 2.1 حذف شده است.
  • پشتیبانی از SpatiaLite 4.1 و 4.2 حذف شده است.
  • پشتیبانی از GDAL 1.11 و GEOS 3.4 حذف شده است.
  1. پشتیبانی از PostgreSQL 9.4 کاهش یافته است.

پشتیبانی سطح بالا از PostgreSQL 9.4 در دسامبر 2019 پایان یافته است. Django 3.0 از PostgreSQL 9.5 و بالاتر پشتیبانی می کند.

  1. پشتیبانی Oracle 12.1 کاهش یافته است.

پشتیبانی سطح بالا از اوراکل 12.1 در ژوئیه 2021 پایان می یابد. جنگو 2.2 تا آوریل 2022 پشتیبانی می شود. جنگو 3.0 به طور رسمی از اوراکل 12.2 پشتیبانی می کند.

  1. API های سازگاری خصوصی Python 2 حذف شد.

هنگامی که پشتیبانی Python 2 در Django 2.0 حذف شد، برخی از API های خصوصی از Django حذف نشدند تا برنامه های شخص ثالث بتوانند از آنها تا پایان عمر Python 2 استفاده کنند.

از آنجا که انتظار می‌رود برنامه ها هنگام اضافه کردن پشتیبانی از Django 3.0 سازگاری با Python 2 را حذف کنند، در حال حاضر این API ها را حذف شده اند.

جنگو 3.2 منتشر شد

تیم جنگو از انتشار  جنگو 3.2 خبر دادند. این نسخه به عنوان نسخه پشتیبانی بلند مدت (LTS) تعیین شده است، به این معنی که رفع مشکلات امنیتی و از دست دادن داده ها حداقل تا سه سال آینده اعمال می شود. همچنین رفع اشکالات و باگ ها، اشکالات عمده عملکرد در ویژگی های تازه معرفی شده و رگرسیون های نسخه های قدیمی جنگو تا هشت ماه آینده تا دسامبر 2021 رفع خواهند شد. از ویژگی های بارز این نسخه می توان به موارد زیر اشاره کرد:

  • کشف خودکار AppConfig پیکربندی برنامه های قابل اتصال را ساده می کند.
  • سفارشی کردن نوع کلیدهای اصلی ایجاد شده به صورت خودکار، فرآیند مهاجرت به فیلدهای کلید اصلی BigAutoField را به طور پیش فرض آغاز می کند.
  • اکنون می توان ایندکس های تابعی را بر روی عبارات و توابع پایگاه داده ایجاد کرد.
  • می توانید Django 3.2 را از صفحه دانلودهای صفحه اصلی جنگو  یا از Python Package Index دریافت کنید.
  • شناسه کلیدی PGP مورد استفاده برای این نسخه Carlton Gibson است: E17DF5C82B4F9D00.
  • با انتشار این نسخه پشتیبانی کامل از Django 3.1 به پایان رسید.
  • آخرین نسخه رفع اشکال جزئی، 3.1.8، نیز منتشر شد.
  • جنگو 3.1 تا دسامبر 2021 رفع مشکلات امنیتی و از دست رفتن اطلاعات را دریافت می کند.
  • همه کاربران تشویق می شوند تا قبل از آن به دریافت رفع مشکلات مربوط به امنیت ادامه دهند.
  • همه کاربران جنگو 3.0 تشویق می شوند تا به جنگو 3.1 یا بالاتر ارتقا دهند.

از کجا می توانیم Django را دانلود کنیم؟

سه گزینه برای دانلود Django وجود دارد:

  • مخزن پکیج پایتون (PyPi)، با استفاده از ابزار pip. این بهترین روش برای به دست آوردن آخرین نسخه پایدار از جنگو است.
  • از یک نسخه از مدیر بسته رایانه خود استفاده کنید. توزیع های جنگو که با سیستم عامل ها همراه هستند مکانیزم نصب آشنایی را ارائه می دهند. البته توجه داشته باشید که نسخه پکیج شده ممکن است کاملاً قدیمی باشد و فقط می تواند در محیط سیستم پایتون نصب شود.
  • نصب از سورس. شما می توانید آخرین نسخه جنگو را از سورس دریافت و نصب کنید. این روش برای مبتدیان توصیه نمی شود.

کدام پایگاه داده؟

Django از چهار پایگاه داده اصلی (PostgreSQL، MySQL، Oracle و SQLite) پشتیبانی می کند، و کتابخانه های انجمن وجود دارند که سطوح مختلف پشتیبانی از سایر پایگاه داده های محبوب SQL و NoSQL را ارائه می دهند. توصیه می شود برای تولید و توسعه، همین پایگاه های داده را انتخاب کنید (اگرچه Django تفاوت های پایگاه داده را با استفاده از Mapper Relation Mapper (ORM) انتزاع می کند.

یادگیری جنگو

کاربرد جنگو (Django)

واقعیت جالب اینجاست Django که نخستین بار برای تأمین برنامه وب برای ناشر روزنامه، لورنس ژورنال-جهانی ایجاد شده است. شما می توانید انتظار داشته باشید که در اجرای پروژه هایی با حجم مطالب متنی، فایل های رسانه ای و ترافیک سنگین، یا هر چیز دیگری که مانند مجله اینترنتی مبتنی بر وب باشد، شگفت انگیز است. اما صنعت نشر تنها محدوده کاربرد فریمورک Django نیست، همچنین برای ساخت وب سایت های تجارت الکترونیک و برنامه های مراقبت های بهداشتی و مالی برای حمل و نقل و رزرو، سایت های رسانه های اجتماعی و موارد دیگر استفاده می شود.

در اینجا چندین نوع پروژه که می توانید با استفاده از فریمورک توسعه دهید، آورده شده است:

  • سیستم عامل های مالی با ویژگی هایی برای تجزیه و تحلیل و محاسبه نتایج تقریبی بر اساس داده های شخصی، تحمل ریسک، احتمال دستیابی به اهداف.
  • ساخته شده در سیستم های CRM سفارشی برای داده های داخلی.
  • سیستم های B2B CRM برای ارتباط بین مشاغل؛
  • پلتفرم هایی که ارتباط بین دو طرف مانند کسب و کار و مصرف کننده را تسهیل می کنند.
  • موتورهای رزرو بالا یا سیستم عامل های خرید با بار بالا؛
  • برنامه های تلفن همراه Android و iOS که از برنامه های وب پشتیبانی می کنند.
  • سیستم های ارزیابی املاک و مستغلات؛
  • سیستم های مدیریت اسناد؛
  • بسترهای لازم برای رسیدگی به موضوعات حقوقی مانند تأیید شرایط وام یا وضعیت اجاره نامه.

برخی از شرکت ها تصمیم می گیرند پروژه های خود را در بیش از فریمورک پایه گذاری کنند. از جنگو همچنین می توانید برای ایجاد ویژگی های جداگانه استفاده کنید، مانند:

  • سیستم ارسال نامه الکترونیکی برای ارسال اعلان ها به کاربران
  • سیستم فیلتر با منطق پیشرفته و قوانین پویا در حال تغییر
  • ژنراتورهای مبتنی بر الگوریتم
  • ابزارهای تحلیل داده
  • رابط هایی برای مدیریت صندوق های سرمایه گذاری
  • داشبورد مدیر
  • سیستم های تأیید مبتنی بر عکس؛
  • و سایر ویژگی هایی که توسعه سیستم عامل های CRM و B2B، بازارهای آنلاین، سیستم های رزرو و سایر موارد را تسهیل می کند.

چرا باید از جنگو (Django) استفاده کنیم؟

به دلایل مختلف، فریمورک برنامه نویسی جنگو را برای ساختن برنامه های کاربردی وب و تلفن همراه انتخاب می کنیم. علاوه بر مزیت های گفته شده در بخش پیشین، جنگو به دلیل سهولت استفاده و طراحی عملی خود به سرعت محبوبیت روز افزون خود را در برنامه نویسی پایتون به دست آورد و تبدیل به یکی از مهم ترین و محبوب ترین فریمورک های زبان Python شد. در حالی که PHP پیروان زیادی دارد، اما انجمن و جامعه انجمن جنگو بسیار مفیدتر از PHP است.

جنگو فریمورک اپلیکیشن وب اساسا مجموعه ابزاری است که همه برنامه های کاربردی وب به آن نیاز دارند. نکته دیگری که جنگو را قدرتمند ساخته این است که با پلاگین های ‘app’ می تواند گسترش یابد. پایتون بر روی هر پلتفرمی، از جمله Mac،PC،Linux،heck اجرا می شود، شما حتی می توانید آن را بر روی toaster (تقریبا) اجرا کنید و Django می تواند هر کجا که پایتون کار می کند اجرا شود.

در نتیجه، تمام محیط های توسعه و تولید را می تواند پشتیبانی کند. جنگو توسط عملیات خبری آنلاین با هدف ایجاد سریع برنامه های وب قابل اعتماد با استفاده از زبان برنامه نویسی پایتون ایجاد شده است. این فریمورک دارای قالب، کتابخانه و API طراحی شده برای همکاری برای رشد طبیعی و اتصال است. در عمل این بدان معنی است که برنامه های ساخته شده در جنگو ممکن است هزینه های آپدیت، تغییرات و افزودنی ها را کاهش دهد. به طور کلی، جنگو کارهای زیادی را آسان می کند.

جنگو برای پروژه هایی از اندازه کوچک تا بزرگترین آنها مناسب است. با توجه به مقیاس پذیری آن، مناسب برای راه اندازی استارت آپ است.

مثال های کاربردی جنگو (Django)

  • اینستاگرام: یکی از شبکه های اجتماعی پرطرفدار است که به تعداد زیادی از داده های رسانه ای و تعامل کاربران می پردازد. Django امکاناتی را فراهم می کند که باعث می شود برنامه وب یکپارچه کار کند، ویژگی های جدیدی اضافه کرده و مسائل را در هر زمان برطرف نمی کند.
  • Spotify: کتابخانه بزرگ رسانه ای با حجم عظیمی از اطلاعات که به کاربران امکان می دهد موسیقی را رایگان و یا بر اساس اشتراک آگهی رایگان گوش دهند. از نظر فنی موارد، Spotify از یادگیری ماشین نیز استفاده می کند، جایی که پایتون یکی از بهترین انتخاب ها است. سازندگان تصمیم گرفتند تا آن را با فریمورک Django ترکیب کنند.
  • واشنگتن پست: جای تعجب نیست که واشنگتن پست از Django برای مدیریت ترافیک سنگین خود استفاده کند زیرا این فریمورک برای ایجاد روزنامه آنلاین ایجاد شده است. چندین مجله اینترنتی دیگر نیز از جنگو استفاده می کنند.
  • Dropbox: فناوری ابری برای ذخیره سازی فایل ها نیاز به عملکرد بالا دارد. Django ابزارهای مورد نیاز خود را برای تهیه اشتراک و همگام سازی و همچنین مقیاس پذیری در Dropbox به شما ارائه می دهد.
  • موزیلا: یکی از پرطرفدارترین مرورگرهای وب، و برنامه دیگر وب که از PHP به پایتون و از این رو به Django تغییر یافته است. در حال حاضر، بهتر می توان ترافیک عظیم و بازدیدهای API را کنترل کرد.
  • ناسا: آنها برای برخی از عناصر کاربردی که به بیشترین قابلیت اطمینان نیاز دارند از جنگو استفاده می کنند. به عنوان مثال وب سایت آنها به اندازه اینستاگرام محبوب نیست، با این وجود از تصاویر با وضوح بالا و به طور متوسط 2 میلیون بازدید در هر ماه بهره می برد.
  • Pinterest: این پلتفرم دارای بیش از 250 میلیون کاربر فعال در هر ماه، حجم عظیمی از داده های رسانه ای را کنترل می کند و هنوز هم می تواند رابط کاربر پسند خود را حفظ کند. به لطف فریمورک اوپن سورس، سازندگان توانستند آن را متناسب با نیاز خود تغییر دهند.
  • Reddit: نخستین سایتی که برای اخبار و بحث های اجتماعی به آن مراجعه می کنید چیست؟ برای بسیاری از افراد، Reddit است. بستر محتوای وب که در آن افراد سؤال می کنند، نظرات را به اشتراک می گذارند و اینکه پست ها بر اساس سیستم رتبه بندی تبلیغ می شوند. Reddit برای بسیاری از قابلیت های عملکردی خود مانند سرویس دادن به ترافیک کاربر سنگین، به Django متکی است.

جنگو برای بک اند یا فرانت اند مناسب است؟

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

با این حال، جنگو به دلیل " Django admin" بسیار مشهور است، یک باطن تولید شده به صورت خودکار که به شما امکان می دهد وب سایت خود را در یک چشمک زدن برای بسیاری از موارد استفاده ساده و بدون نیاز به کدنویسی زیاد مدیریت کنید. به عبارت دیگر، برای قسمت فرانت اند، Django به شما در انتخاب داده ها، قالب بندی و نمایش کمک می کند. این ویژگی شامل مدیریت URL، یک زبان الگوبرداری، مکانیسم های تأیید اعتبار، cache hooks و ابزارهای مختلف ناوبری مانند paginators است.

در بخش backend ، جنگو دارای ORM است که به شما امکان می دهد با آسانی منبع داده خود را دستکاری کنید، فرم ها (یک پیده سازی مستقل HTML) را برای پردازش ورودی کاربر و اعتبار سنجی داده ها و سیگنال ها و پیاده سازی الگوی observer به علاوه یک تن از ابزارهای کاربردی و خاص را برای شما فراهم می کند. برای بقیه کارهای backend، جنگو به شما کمکی نمی کند، شما فقط باید از پایتون استفاده کنید. منطق کسب و کار اصطلاحی کاملاً گسترده است که در این بخش به میان می آید. احتمالاً شما هم می خواهید بدانید که جنگو مفهوم برنامه ها را با خود دارد، یک کتابخانه جنگو قابل جابجایی مستقل که مشکلی را حل می کند. جامعه جنگو بسیار عظیم است و بنابراین برنامه های بی شماری وجود دارد که منطق کسب و کار خاصی را انجام می دهند که vanilla Django این کار را نمی کند.

مقایسه جنگو (Django) با فلسک (Flask)

مقایسه جنگو با فلسک

برای توسعه وب استفاده از کدام فریمورک بهتر است؟

بسیاری از فریمورک های وب مبتنی بر پایتون توسعه دهندگان را قادر می سازد تا به سرعت برنامه های مقیاس پذیر بسازند. از وب سایت های ساده گرفته تا وب سایت های پیچیده، این فریمورک ها می توانند همه کارها را انجام دهند. از میان بسیاری از گزینه های محبوب، بیشتر صحبت در مورد Django و Flask است و بیشتر به این دلیل است که هر دو از جهاتی شبیه به هم هستند و از بسیاری جهات دیگر متفاوت! این منجر به مقایسه بین هر دو مورد می شود، و گرچه هر یک از این فریمورک های توسعه وب ویژگی های منحصر به فرد خود را دارد، عوامل زیادی وجود دارد که باید قبل از انتخاب یکی برای برنامه های خود به آنها توجه کنید.

از یک طرف، جنگو یک فریمورک وب فول استک است، در حالی که Flask یک فریمورک سبک وزن و قابل توسعه است. اگر می خواهید بیشتر در مورد کدگذاری کار کنید و مفاهیم اصلی را بیاموزید، Flask به شما کمک می کند تا نحوه عملکرد هر یک از اجزای سازنده را برای درک و راه اندازی یک برنامه وب ساده درک کنید. جنگو از الگوهای طراحی (Design Patterns) بسیاری پیروی می کند و از این رو شما بسیاری از مفاهیم هیجان انگیز را یاد می گیرید. بعلاوه، با هر دو فریمورک، پشتیبانی و مستندات زیادی در جامعه وجود دارد، بنابراین اگر هر مشکلی روبرو شدید، این احتمال وجود دارد که این مشکل قبلاً بحث شده و حل شده باشد.

جنگو از سال 2005 وجود داشته است. فلسک در سال 2010 به وجود آمد - حدود 5 سال بعد. با این حال، هر دو امروز از فریمورک های برتر دنیای پایتون هستند. محبوبیت رو به رشد آنها با توجه به تعداد سوالاتی که مردم در مورد هر دو این فریمورک ها در انجمن های مختلف فناوری می پرسند مشهود است.

اگر دانش عملی پایتون را داشته باشید می توانید روی هر یک از فریمورک ها کار کنید. برای راحتی شما، یک مرور اساسی در هر دو مورد جنگو و فلسک ارائه داده ایم تا بتوانید تفاوت ها و کاربرد هر یک را به روش بهتری درک کنید.

جنگو

Django یک فریمورک برنامه وب است که از بسیاری از ویژگی های استاندارد برای ایجاد وب سایت های امن و قابل نگهداری مراقبت می کند. به عنوان یک توسعه دهنده، تمام آنچه شما نیاز دارید این است که منطق کسب و کار خود را ایجاد کنید. جنگو رایگان و اوپن سورس است و دارای پشتیبانی جامعه بسیار فعال و مفیدی است.همچنین دارای داکیومنت های زیادی است. نام جنگو رسماً در ژوئیه 2005 به وجود آمد.

برخی از ویژگی های جنگو عبارتند از:

  • این یک فریمورک متنوع است و می تواند برای هر وب سایتی با هر محتوایی در فرمت هایی مانند HTML، XML، JSON و غیره استفاده شود. این برنامه همزمان با هر فریمورک سمت کلاینت کار می کند.
  • این یک فریمورک امن است و به طور خودکار ویژگی های امنیتی استاندارد مانند مدیریت حساب کاربر، مدیریت معاملات، جعل درخواست بین سایت، کلیک بر روی کلیک و غیره را مدیریت می کند.
  • مقیاس پذیر و قابل نگهداری است. جنگو الگو ها و اصول طراحی را برای استفاده مجدد و حفظ کد دنبال می کند. اصل "خود را تکرار نکنید" اطمینان می دهد که هیچ تکراری وجود ندارد. از آنجا که Django یک فریمورک مبتنی بر مولفه است، هر لایه مستقل از لایه دیگر است که باعث می شود برنامه در هر سطح مقیاس پذیر باشد.
  • جنگو قابل حمل است. در حال حاضر در پایتون که محبوب ترین زبان برنامه نویسی است، نوشته شده است.

فلسک (Flask)

فلسک یک فریمورک سبک وزن است که به طور عام به عنوان یک فریمورک خرد طبقه بندی می شود. Flask دارای برخی ویژگی های استاندارد است و به توسعه دهندگان اجازه می دهد هر تعداد کتابخانه یا پلاگین را برای یک پسوند اضافه کنند. اگر یک مورد استفاده ساده و ابتکاری برای افزودن به یک برنامه موجود دارید، Flask باید انتخاب شما باشد زیرا انعطاف پذیری را ارائه می دهد. Flask با مجموعه کوچکی از API آسان برای یادگیری ارائه می شود و مستندات آن بسیار عالی است. اگر در پایتون تازه وارد هستید، توسعه وب خود را با Flask شروع کنید، تا بتوانید backend و frontend را احساس کنید و همچنین مفاهیم اصلی را به خوبی یاد بگیرید.

برخی از ویژگی های فلسک عبارتند از:

  • تصمیمات برای ساخت برنامه در مرحله توسعه (پیاده سازی) را به شما (توسعه دهنده) می دهد.
  • همراه با سرور توسعه داخلی و رفع اشکال سریع است.
  • API منسجم و شسته و رفته
  • تنظیمات آسان و انعطاف پذیر
  • درخواست RESTful و درخواست HTTP
  • پشتیبانی واحد تست یکپارچه
  • Flask دو وابستگی اصلی دارد - Werkzeug و Jinja2 که به ترتیب پشتیبانی و الگوهای قوی WSGI را ارائه می دهند.

یادگیری جنگو

اگر شما هم علاقه مند به یادگیری جنگو وپایتون هستید به شما پیشنها می کنیم از این دوره ها شروع کنید:

نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود