کامل
Django از بسیاری از پیچیدگی های توسعه وب جلوگیری می کند بنابراین شما می توانید بدون نیاز به انجام مجدد کار های اولیه تمرکز کنید. این framework رایگان و open source است و اجتماعی فعال و پیشرفته، مستندات عالی و بسیاری گزینه های دیگر برای پشتیبانی های رایگان و غیررایگان دارد.
Django به شما در نوشتن نرم افزار هایی که ویژگی های زیر را دارد کمک می کند:
Django از فلسفه ی "Batteries included" پیروی می کند و تقریبا هرچیزی که توسعه دهندگان ممکن است به آن احتیاج داشته باشند را ارائه می دهد. زیرا هرچیزی که شما به آن احتیاج دارید بخشی از یک محصول است و همه ی این ها بطور یکپارچه بایکدیگر کار می کنند و از اصول طراحی محکمی استفاده می کنند و مستندات گسترده و به روزی دارند.
همه کاره
Django می تواند تقریبا برای ساخت هرنوع وبسایتی استفاده شود – از سایت های مدیریت محتوا و wiki ها تا شبکه های اجتماعی و سایت های خبری. Django می تواند با هر framework سمت کلاینت کار کند و می تواند محتوا را در تقریبا هر نوع فرمتی (شامل HTML، RSS، JSON، XML و غیره) ارسال کند. سایتی که شما هم اکنون درحال خواندن آن هستید برپایه ی Django است.
امنیت
از لحاظ داخلی درحالی که انتخاب هایی برای هر نوع عملکردی که شما می خواهید را ارائه می دهد (برای مثال چندین پایگاه داده ی معروف،موتور های قالب سازی و غیره) همچنین برای استفاده از کامپوننت های دیگر ئر صورت نیاز نیز توسعه یافته است.
Django با ارائه ی framework که براساس "کار درست را انجام دهید" تا از وبسایت به صورت اتوماتیک محافظت کنید، مهندسی شده است، به توسعه دهندگان کمک می کند تا از بسیاری از خطا های امنیتی معمول اجتناب کنند. برای مثال Django یک راه ایمن برای مدیریت حساب های کاربری و رمزعبور ها با اجتناب از خطاهای معمول مانند گذاشتن اطلاعات session در cooki ها که آسیب پذیر هستند( بجای cooki ها فقط از یک کلید استفاده کنید و داده ی اصلی در پایگاه داده ذخیره شود) یا ذخیره سازی رمزعبور به جای رمزعبور هش شده.
یک هش رمزعبور یک مقدار با طول ثابت است که توسط یک تابع هش رمزنگاری تولید می شود. Django می تواند بررسی کند که آیا رمزعبور وارد شده با دادن آن به تابع هش و مقایسه ی خروجی با مقدار ذخیره شده، درست است یا نه. با این حال با توجه به ماهیت یک طرفه بودن تابع مقدار هش ذخیره شده به خطر بیفتد برای شخص مهاجم دشوار است تا رمز اصلی را به دست بیاورد.
Django بطور پیش فرض از آسیب پذیری های بسیاری از جمله SQL injection،cross-site scripting،جعل درخواست cross-site و clickjacking (برای جزئیات بیشتر از چنین حمله هایی Website security را مشاهده کنید) محافظت می کند.
مقیاس پذیر
Django از یک معماری مبتنی بر مولفه "بدون اشتراک" استفاده می کند (هر بخش از معماری از دیگر اجزا مستقل است از این رو درصورت لزوم می توان آن ها را تغییر داد و یا جایگزین کرد) داشتن یک جداسازی تمیز بین اجزای مختلف به این معنی است که برای ترافیک های رو به رشد با اضافه کردن سخت افزار مانند سرور های کش، سرور های پایگاه داده یا سرور های اپلیکیشن در هر سطحی مقیاس پذیر است. برخی از سایت های شلوغ بطور موفق Django را مقیاس پذیر کرده اند تا درخواست های خود را ببینند (برای مثال اینستاگرام و Disqus)
قابل نگهداری
کد Django با استفاده از الگوها و قوانین طراحی که به ساخت کد های قابل استفاده ی مجدد و قابل نگهداری تشویق می کند، نوشته شده است. بطور خاص از اصل خودت تکرار نکن (DRY) استفاده می کند بنابراین هیچ کپی غیرضروری وجود ندارد و حجم کد کاهش پیدا می کند. Django همچنین گروه سازی های عملکرد های مرتبط به یکدیگر را در "اپلیکیشن های" قابل استفاده ی مجدد و در سطحی پایین تر گروه های مرتبط با کد در ماژول ها (در الگوی Model View Controller (MVC))، ارتقاء می دهد.
قابل حمل
Django با پایتون نوشته شده است که روی بسیاری از platform ها اجرا می شود این به این معنی است که شما به هیچ platform سرور خاصی وابسته نیستید و شما میتوانید اپلیکیشن های خود را روی نسخه های بسیاری از لینوکس، ویندوز و Mac OS X اجرا کنید. علاوه براین Django توسط بسیاری از ارائه دهندگان هاست وب به خوبی پشتیبانی می شود و اغلب زیربنا و مستندات خاصی برای هاست کردن سایت های Django ارائه می دهند.
Django از کجا پدید آمد؟
Django ابتدائا بین سال های 2003 و 2005 توسط یک تیم وب که مسئول ساخت و دستیابی وبسایت های روزنامه ای بودند توسعه یافت. پس از ساخت تعدادی سایت شروع به فاکتور گیری و استفاده ی مجدد از بسیاری از کد های مشترک و الگو های طراحی کرد. این کد های مشترک به یک framework توسعه ی وب عمومی با عنوان Django در سال 2005 که open-sourced نیز بود تبدیل شد.
Django رشد و بهبود خود را از اولین نسخه ی منتشر شده ی خود (1.0) در سپتامبر 2008 تا نسخه ی اخیر خود 2.0 (2017) ادامه داده است. هر انتشار شامل عملکرد های جدید و رفع باگ ها از جمله پشتیبانی از پایگاه داده های جدید، موتور های template و ذخیره سازی از طریق اضافه کردن توابع view "عمومی" و کلاس ها (که حجم کدی که توسعه دهنده باید برای تعدادی از وظایف برنامه نویسی بنویسد کاهش یابد)
توجه:نوشته های منتشر شده در وبسایت Django را بررسی کنید تا تغییرات نسخه های اخیر را ببینید و ببینید که چه حجم از کار انجام شده را Django بهبود داده شود.
Django یک پروژه ی open source پرطرفدار است که هزاران کاربر دارد. این درحالی است که Django هنوز برخی ویژگی هایی دارد که اصل خودش را بازتاب می دهد. Django به یک framework همه کاره که مناسب برای توسعه ی هرنوع وبسایتی است تبدیل شده است.
Django چقدر محبوب است؟
هیچ اندازه گیری مناسب و مشخصی برای محبوبیت framework های سمت سرور وجود ندارد (اگرچه سایت هایی نظیر Hot Frameworks قصد دارند تا محبوبیت را با استفاده از مکانیزم هایی نظیر شمارش تعداد پروژه های GitHub و سوالات StackOverflow برای هر platform به دست بیاورد) یک سوال بهتر این است که آیا Django به اندازه ی کافی محبوب است؟ تا از مشکلات مربوط به platform های غیرمحبوب جلوگیری کنیم. آیا Django هنوز روند تکامل را ادامه می دهد؟ آیا درصورت نیاز می توانید کمک بگیرید؟ آیا شانسی وجود دارد که اگر Django را یاد بگیرید کار با حقوق داشته باشید؟
برمبنای تعداد سایت های پرطرفدار که از Django استفاده می کنند، تعداد افرادی که در پایگاه کد شرکت کرده اند و تعداد افرادی که به صورت رایگان و غیر رایگان پشتیبانی می کنند، بله، Django یک framework محبوب است.
سایت های پرطفداری که از Django استفاده می گنند شامل Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest, and Open Stack است. (منبع: صفحه ی اصلی Django)
کد Django به چه صورت است؟
در وبسایت های سنتی حاصل از داده یک وب اپلیکیشن منتظر درخواست HTTP از مرورگر وب (یا کلاینت دیگر) می ماند و زمانی که درخواست می رسد بر اساس URL یا اطلاعات احتمالی در داده های POST یا داده های GET رو آنچه که نیاز است کار می کند و براساس موارد مورد نیاز اطلاعاتی را پایگاه داده می خواند یا می نویسد و یا کار های دیگری برای انجام آن درخواست می کند و سپس یک پاسخ به مرورگر وب برمی گرداند و معمولا یک صفحه ی داینامیک HTML برای مرورگر به منظور نشان دادن وارد کردن داده های بازیابی شده در placeholder های HTML ساخته میشود.
وب اپلیکیشن های Django معمولا کد هایی که هر قسمت را مدیریت می کند به فایل هایی جداگانه گروه بندی می کند.
URL ها: درحالی که ممکن است درخواست ها را از هر URL از طریق یک تابع پردازش کرد، اگر برای مدیریت هر منبع یک تابع View جداگانه بنویسیم قابلیت نگهداری بسیار افزایش می یابد. یک نگاشت کننده ی URL استفاده می شود تا درخواست های HTTP را به view مرتبط بر اساس درخواست URL، منتقل کند همچنین نگاشت کننده ی URL می تواند الگو های خاصی از رشته ها یا اعداد که در URL نشان داده می شوند را تطابق دهد و آن ها را به عنوان داده به تابع view ارسال کند.
view : یک view یک تابع مدیریت درخواست است که درخواست های HTTP را دریافت می کند و پاسخ های HTTP را برمیگرداند. View ها به داده های مورد نیاز برای انجام درخواست ها از طریق مدل ها دسترسی دارند و قالب بندی پاسخ ها را به template ها محول می کند.
مدل ها: مدل ها پروژه های پایتون هستند که ساختار داده های یک اپلیکیشن را تعریف می کندد و مکانیزمی برای مدیریت (اضافه ، ویرایش و حذف کردن) و رکورد های کوئری در پایگاه داده ارائه می کند.
template ها: یک template یک فایل متنی است که ساختار یا layout یک فایل (مانند صفحه ی HTML ) را با placeholder هایی برای نشان دادن محتوای واقعی تعریف می کند. یک View می تواند به صورت داینامیک یک صفحه ی HTML با استفاده از یک تمپلیت HTML بسازد و آن را با داده هایی از یک مدل پر کند. یک template می تواند برای تعریف ساختار هر نوع فایلی استفاده شود و نیاز نیست که فقط HTML باشد.
توجه: در Django به چنین ساختاری معماری Model View Template (MVT) می گویند که شباهت های بسیاری به معماری Model View Controller دارد.
منبع : digidanesh