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

چرا این فصل رو در دوره ی یادگیری جنگو داریم؟

با یه چرخ زدن در Github متوجه میشید که فاصله زیادی بین ساختن اَپلیکیشن های ساده و اَپلیکیشن های بازار کار وجود داره و ما با همدیگه در این فصل قراره تا این فاصله رو تا حدود قابل قبولی جبران کنیم.
وقتیکه برای اولین بار جنگو رو نصب و یک پروژه جدید ایجاد میکنید، میبینید که تنظیمات بصورت پیشفرض برای توسعه محلی تنظیم شدن که کاملا منطقیه ! چون از همون اول کار لازم نیست که همه ویژگی های یک وبسایت بزرگ به پروژه اضافه بشن. این تنظیمات شامل SQLite به عنوان دیتابیس پیشفرض، یک وب سرور محلی، مدل کاربری از پیش ساخته شده و خیلی تنظیمات دیگه هستن که بصورت غیر مستقیم اعمال شدن.
برای یک پروژه در سطح بازار کار لازمه که اکثر این تنظیمات دوباره دسخوش تغییر بشن اما در این فصل به جای غرق کردن شما در بین تمامی این گزینه ها ، میخواهیم از یک رویکرد به روز برای ساختن وب سایتهای حرفه ای پیروی کنیم که مورد تایید جامعه جنگو هست. موضوعاتی که پوشش داده میشن شامل استفاده از Docker به منظور توسعه و استقرار محلی، PostgreSQL، یک مدل پیشفرض برای user، یک روند احراز هویت قوی برای کاربران با استفاده از ایمیل، تست های جامع، مسائل امنیتی و ... میشن.

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

ساختار فصل

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

در بخش 3 به معرفی PostgreSQL میپردازیم، که یک دیتابیس قابل اجرا در محیط Docker هستش.

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

در بخش 5 روی ساختن یک اَپ Pages به منظور پیاده سازی یک homepage ساده تمرکز میکنیم و تست های قدرتمندی رو هم براش مینویسیم.

در بخش 6 یک روند کامل برای ثبت نام کاربران رو از صفر پیاده سازی میکنیم که از اَپ auth (اَپ داخلی یا توکار خود جنگو) برای ثبت نام، ورود و خروج استفاده میکنه.

در بخش 7 پیکربندی صحیحی برای فایلهای static از قبیل: CSS، JavaScript و Images معرفی میکنیم.( Bootstrap+ )

در بخش 8 تمرکزمون رو روی هر چه پیشرفته تر کردن پروسه ثبت نام کاربران میگذاریم که در این راستا از پکیج django-allauth استفاده میکنیم.

در بخش 9 به معرفی متغیر های محیطی میپردازیم که یکی از دوازده فاکتور اساسی در توسعه اَپلیکیشن هاست و به وفور در جامعه توسعه دهندگان ازش استفاده میشه.

در بخش های 10-12 روی ایمیل و یک سرویس ارائه دهنده خدمات ایمیل تمرکز میکنیم.

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

نیمه دوم کتاب روی قابلیت های منحصر به وب سایت کتابفروشی ما تمرکز داره.

در بخش 13 کار رو با ایجاد کردن چند مدل، تست و صفحه برای وبسایت کتابفروشی خودمون از طریق اَپ Books جلو میبریم. همچنین قراره تا درباره URL ها صحبتی داشته باشیم و از id به slug و سپس به UUID (Universally Unique Identifier) سوییچ کنیم.

در بخش 14 قابلیت کامنت گذاری رو به وبسایت اضافه میکنیم و در مورد Foreign key صحبتی خواهیم داشت.

در بخش 15 قابلیت آپلود و اضافه کردن عکس ها رو به وبسایت ایجاد میکنیم.

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

در بخش 17 قابلیت جستجو رو اضافه میکنیم که برای هر وبسایتی از جمله وبسایتهای تجاری یک جزء ضروری به حساب میاد .

در بخش 18 تمرکز خودمون رو روی بهینه سازی عملکرد وبسایت میگذاریم که برای این منظور از django-debug-toolbar استفاده میکنیم تا نگاه دقیق تری به عملکرد کوئری ها و ... داشته باشیم.

در بخش 19 به مسائل امنیتی در جنگو میپردازیم.

در بخش های 20 و 21 به استقرار صحیح و آنلاین کردن وبسایت میپردازیم.

جامعه جنگو

" به خاطر فریمورک جنگو بیا و بخاطر اجتماع توسعه دهندگان جنگو بمون" ، سخن معروفیه که همیشه در بین اجتماع توسعه دهندگان جنگو زنده است. کد های اساسی و پایه جنگو در کنار کارآمد و تاثیرگذار بودن، بروز بودن و امنیت پروژه ها رو هم تا به این لحظه بخوبی تامین کردن. توسعه جنگو بصورت جمعی و عمومی اتفاق میفته که میتونید از طریق لیست django-developers بهشون دسترسی باشید، همچنین نظارت بر این فعالیت ها بر عهده Django Software Foundation هستش. همچنین یک انجمن رسمی Django forum وجود داره که متشکل از توسعه دهندگان بسیاری هستش و این انجمن رو به مکان مناسبی برای مطرح کردن سوالات تبدیل کرده.

پیش نیاز ها

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

سورس کد این فصل

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

جمع بندی

برای هر توسعه دهنده ای، جنگو یک انتخاب فوق العاده برای ایجاد وب اَپلیکیشین های مدرن و قدرتمند با حداقل میزان کد لازم هستش.
در بخش بعدی در مورد Docker و نحوه پیکربندی هر رایانه به منظور توسعه وب سایت های جنگویی به کمک داکِر صحبت میکنیم.