معرفی
به فصل اول از یادگیری جنگو با رویکرد پروژه محور در توسعه وب خوش اومدید !
در این فصل با ساخت 5 وب اپلیکیشن که به تدریج بر پیچیدگیشون افزوده میشه جلو میریم. اولش با ساخت یک اَپ ساده Hello world شروع و سپس به سمت اَپ های Pages app، Massage Board و Blog app (شامل فُرم ها و حساب کاربری) حرکت میکنیم و در نهایت با پروژه Newspaper app فصل رو به اتمام میرسونیم. در انتهای این فصل قراره به اندازه کافی با فریمورک جنگو راحت باشید که بتونید پروژه های خودتون رو از صفر شروع کنید و مبتنی بر مطالب این دوره جلو ببرید.
چرا این فصل در این دوره
با وجود اینکه مستندات (documents) جنگو بشدت غنی هستند ولی این وسط همیشه فقدان خاصی توی آموزش های جنگو برای افراد مبتدی و تازه کار احساس میشه.
علت این قضیه برمیگرده به اونجایی که توسعه دهنده های جنگو موقع نگارش مستندات جنگو سر دو راهی مهمی قرار گرفته بودند:
- روی سهولت استفاده از جنگو تمرکز کنند.
- روی عمق استفاده از فریمورک جنگو تمرکز کنند.
انتخاب توسعه دهنده های جنگو مورد دوم بود که توسعه دهنده های ارشد قدردان این تصمیم هستند در حالیکه توسعه دهنده های مبتدی شاید خیلی طرفدار این تصمیم نباشن !
هدف ما توی این فصل پرکردن این خلا و نشون دادن این قضیه هست که چقدر جنگو میتونه دوست خوبی برای کسانی باشه به تازگی با این فریمورک آشنا شدند و دنبال یه منبع خوب واسه شروع میگردن .
ساختار فصل
این فصل در بخش 2 با نشون دادن این که چطور میشه یک پروژه جنگو رو راه اندازی کرد شروع میشه.
در بخش 3 ما قراره با همدیگه اولین پروژه خودمو بسازیم که یک اَپ Hello World خواهد بود و به ما نشون میده که چجوری پروژه های جدید جنگویی خودمون رو پیاده کنیم. همچین قراره کار خودمونو با Git ذخیره کنیم و یک کپی ازش رو توی یک مخزن ذخیره سازی کد (repository) در GitHub آپلود کنیم.
در بخش 4 پروژه Pages app رو با معرفی templates و class-based views جلو میبریم. توسعه مبتنی بر اصل DRY (Don’t Repeat Yourself) در جنگو توسط template ها با استفاده از HTML و CSS پیاده سازی شده، در حالیکه class-based views میتونن همین کار رو با حداقل مقدار کد انجامش بدن. ما همچنین در این بخش قرار هستش تا اولین تست های خودمون رو بنویسیم.
در بخش 5 اولین پروژه خودمون که قراره توسط یک دیتابیس بک-اِند پشتیبانی بشه رو میسازیم که در واقع همون Message Board app خواهد بود. جنگو با ارائه ORM (Object-Relational-Mapper) قدرتمند خودش کد پایتون ما رو به کد SQL مورد نیاز برای دیتابیس های متفاوت تبدیل میکنه (ORM بصورت کامل در فصل هفتم این دوره مورد بررسی قرار خواهد گرفت). همچنین با admin app آشنا میشیم که یک اَپ درون ساختاری هستش و در درون خود جنگو تعبیه شده. این اَپ یک رابط گرافیکی برای تعامل با داده هاست که به عنوان یک سیستم مدیریت محتوا یا به اصطلاح CMS مورد استفاده قرار میگیره و از لحاظ کاربرد کلی میشه گفت که مشابه Wordpress هستش.( با مدیریت محتوا در فصل پنجم این دوره بخوبی آشنا خواهید شد.)
در بخش های 9-6 ما قرار هستش تا عملکرد CRUD (Create-Read-Update-Delete) رو در پروژه Blog app مورد بررسی قرار بدیم. با وجود generic class-based views فقط لازمه تا مقدار خیلی کمی کد واسه این منظور بنویسیم. بعد از این فرم ها رو اضافه میکنیم و سیستم احراز هویت داخلی جنگو رو برای کار هایی مثل ثبت نام و ورود و خروج ادغام میکنیم.
بخش های 18-10 این بخش ها اختصاص داده شدند به ساخت یک Newspaper app قوی و کارآمد، که با معرفی یک user model سفارشی شده در بخش 10 شروع میشه. بخش 11 user authentication رو پوشش میده، بخش 12 به منظور استایل دهی به پروژه Bootstrap رو به کار اضافه میکنیم، و در بخش های 15-13 امکان تغییر رمز و تایید ایمیل رو در پروژه پیاده سازی میکنیم. در بخش های 17و 16 قسمت هایی برای ایجاد مقالات روزنامه نگاران رو به همراه اجازه دسترسی بهشون اضافه میکنیم.
بخش 18 اختصاص داره به ایجاد قابلیت کامِنت گذاری برای مقالات که کار وب سایت روزنامه نگاری ما در این بخش به پایان میرسه و پروژه اصلی این فصل تکمیل میشه.
ساختار این فصل کاملا سنجیده شده هستش بطوریکه هر بخش مفاهیم جدیدی رو معرفی میکنه و آموزه ها و نکات قبلی رو تقویت میکنه. بشدت توصیه میشه که به ترتیب این فصل رو جلو ببرید حتی اگه دلتون میخواد چند بخش رو بپرید جلو ! چون بخش های آخر در مقایسه های با بخش های اول، مفاهیم مطرح شده رو با عمق یکسانی پوشش ندادند.
در انتهای این فصل شما قراره درک قوی و درستی از نحوه کار جنگو داشته باشید تا بتونید اَپلیکیشن های خودتون رو بسازید و پایه محکمی به منظور استفاده حداکثری از این دوره و بکارگیری تکنیک های پیشرفته جنگو در آینده برای خودتون ایجاد کنید.
توصیه ما برای مواقعی که شاید گیر کنید!
گیر کردن روی یک مشکل بخشی از برنامه نویس بودن هستش. این اتفاق برای هر کسی توی هر سطحی پیش میاد و تنها چیزی که این وسط تغییر میکنه میزان سختی سوالی هست که مطرح میشه. بخشی از پروسه تبدیل شدن به یک توسعه دهنده خوب پذیرفتن این سختی و حل کردن اینجور مسایل با کمک گرفتن و سوال پرسیدن درست هستش.
خبر خوب در این باره اینه که تقریبا اکثرا اِرورهایی که امکان داره باهاشون مواجه بشید، قبلا یکی دیگه باهاش دست و پنجه نرم کرده! واسه همین کپی و پیست کردن اروری که واستون پیش اومده توی یک موتور جستجو مثل Google منتج به یک جواب از StackOverflow یا یک وبلاگ شخصی میشه که با جزئیات به همون اِروری که واستون پیش اومده داره اشاره میکنه، پس حتما سعی کنید که گوگل کردن رو خوب یاد بگیرید !
حالا اگه مشکلتون صرفا منحصر به این دوره باشه چی ؟ توصیه ما اینه که سورس کد مربوط به این فصل از دوره رو از این لینک دانلود کنید و کد بخش مورد نظرتون رو پیدا کنید و با کد خودتون تطبیق بدید یا حتی میتونید کپی پیست کنید!
درکنار این موارد همواره به یاد داشته باشید که دو منبع آنلاین فوق العاده برای جامعه جنگو در دسترس هست که سوالات و جوااب ها رو گرد آوری میکنند. اولی official Django Forum و دومی Django Users Google Group هستش. هر دو منبع به عنوان قدم بعدی توی کمک گرفتن میتونن نقش بسزایی در حل مشکلتون داشته باشند.
جمع بندی
خب حالا یک دید کلی نسبت به ساختار کلی این فصل داریم و در بخش بعدی از این فصل سراغ نحوه راه اندازی یک پروژه جنگویی میریم.