آموزش جنگو (Django)

دسته بندی: آموزش پایتون (Python)

آموزش جنگو

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

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

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

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

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

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

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

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

کامپوننت ها

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

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

  • وب سرور سبک و مستقل برای توسعه و آزمایش
  • سیستم سریال سازی و اعتبار سنجی فرم که می تواند بین فرم های 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 را می توان با سیستم عامل Django-MySQL در سیستم عامل های مایکروسافت استفاده کرد، در حالی که به طور مشابه پشتوانه های خارجی نیز برای IBM Db2 ،SQL Anywhere و Firebird وجود دارد. انشعابی به نام django-nonrel وجود دارد که از پایگاه داده های NoSQL مانند MongoDB و Datastore Google App Engine پشتیبانی می کند.

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

پشتیبانی از 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)

واقعیت جالب اینجاست 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 متکی است.
آیا این نوشته را دوست داشتید؟