آموزش جنگو در کاشان
در این وبلاگ آموزشی از شرکت برنامه نویسی وارنا قصد داریم تا به شما منبعی عالی برای یادگیری جنگو که فریمورکی عالی از زبان عالی پایتون می باشد را معرفی میکنیم .
آموزش Django در کاشان؛ آشنایی کامل با جنگو و مسیر یادگیری آن
اگر تصمیم گرفتهاید وارد برنامهنویسی بکاند شوید، احتمالاً خیلی زود با نام Django روبهرو میشوید. جنگو یکی از فریمورکهای شناختهشده Python برای ساخت وبسایتها و سامانههای تحت وب است؛ فریمورکی که برای بسیاری از نیازهای متداول یک پروژه، ابزارهای آماده و ساختار مشخصی در اختیار برنامهنویس قرار میدهد.
در این مطلب قرار نیست سراغ نصب یا تنظیمات اولیه برویم. تمرکز اصلی روی خود Django است: اینکه چگونه کار میکند، چه اجزایی دارد، در یک پروژه واقعی چه نقشی بازی میکند و برای یادگیری اصولی آن چه مباحثی را باید دنبال کنید.
قبل از شروع؛ Django زبان برنامهنویسی نیست
یکی از اشتباههایی که گاهی در شروع مسیر دیده میشود، استفاده از عبارت «زبان Django» است. Django خودش یک زبان برنامهنویسی نیست. زبان اصلی این مسیر Python است و Django فریمورکی است که روی Python قرار گرفته و مجموعهای از ابزارها و قواعد را برای توسعه وب در اختیار برنامهنویس میگذارد.
پس وقتی از آموزش Django صحبت میکنیم، منظور یادگیری روشی ساختاریافته برای استفاده از Python در سمت سرور و توسعه پروژههای وب است.
Django چیست و چرا ساخته شده است؟
Django یک Web Framework متنباز است که با Python کار میکند. زمانی که قرار است یک وبسایت پویا یا سامانه تحت وب بسازید، بخش بزرگی از زمان پروژه صرف کارهایی میشود که تقریباً در بسیاری از سیستمها مشترک هستند؛ برای مثال مدیریت کاربران، کار با پایگاه داده، دریافت درخواستها، کنترل URLها، اعتبارسنجی فرمها و مدیریت سطح دسترسی.
اگر برای هر پروژه تمام این بخشها از صفر نوشته شوند، توسعه پروژه زمان بیشتری میگیرد و احتمال خطا نیز بالاتر میرود. Django بسیاری از این نیازهای پایه را در قالب یک ساختار مشخص فراهم میکند.
این به معنی آماده بودن کامل پروژه نیست. شما همچنان باید منطق کسبوکار، مدل داده، رفتار صفحات و نیازهای اختصاصی پروژه را طراحی کنید؛ اما Django باعث میشود انرژی برنامهنویس بیشتر روی مسئله اصلی پروژه متمرکز شود.
Django در بخش بکاند دقیقاً چه کاری انجام میدهد؟
فرض کنید وارد یک فروشگاه اینترنتی میشوید و روی یک محصول کلیک میکنید. مرورگر شما باید از سرور اطلاعات آن محصول را درخواست کند. سرور باید بفهمد کدام محصول خواسته شده، اطلاعات آن را از پایگاه داده پیدا کند و پاسخ مناسب را برگرداند.
حالا اگر وارد حساب خود شوید، محصول را به سبد خرید اضافه کنید، آدرس ثبت کنید یا سفارشی ایجاد شود، تعداد عملیات بیشتر خواهد شد. بخش زیادی از منطق پشت این اتفاقات در سمت بکاند قرار دارد.
Django محیطی فراهم میکند که بتوان این منطق را با ساختاری مشخص نوشت. بنابراین جنگو فقط برای ساخت صفحه نیست؛ بخش مهم کار آن مدیریت داده، کاربران، ارتباط میان قسمتهای سیستم و پاسخ به درخواستهای مختلف است.
چرخه Request و Response در Django
یکی از مهمترین چیزهایی که هنگام یادگیری Django باید درک کنید، مسیر حرکت یک درخواست است. کاربر عملی انجام میدهد و مرورگر یک Request به سرور ارسال میکند.
Django آدرس درخواست را بررسی میکند و براساس URL تصمیم میگیرد درخواست باید به کدام بخش منتقل شود. View درخواست را دریافت میکند، در صورت نیاز با Model و دیتابیس ارتباط میگیرد و پاسخ را آماده میکند.
پاسخ ممکن است یک صفحه HTML، یک پیام، فایل، Redirect یا دادهای در قالب دیگری باشد.
معماری MVT در Django یعنی چه؟
Django برای جدا نگه داشتن مسئولیت بخشهای مختلف پروژه از الگویی به نام MVT استفاده میکند. این سه حرف از Model، View و Template گرفته شدهاند.
Model: ساختار داده را مشخص میکند و تعیین میکند اطلاعات چگونه ذخیره شوند.
View: بخش مهمی از منطق پردازش درخواست را مدیریت میکند.
Template: اطلاعات آمادهشده را در قالب HTML برای کاربر نمایش میدهد.
تفاوت Project و App در Django
در Django معمولاً یک پروژه اصلی داریم که تنظیمات کلی نرمافزار در آن قرار میگیرد. اما امکانات مختلف پروژه را میتوان به Appهای جداگانه تقسیم کرد.
مثلاً در یک فروشگاه اینترنتی، بخش کاربران میتواند یک App باشد، محصولات App دیگری داشته باشند و سفارشها نیز در بخش مستقلی مدیریت شوند.
این جداسازی باعث میشود کدها کمتر در هم آمیخته شوند و توسعه پروژه در آینده سادهتر باشد.
URL و مسیریابی در Django
وقتی کاربر وارد یک آدرس میشود، Django باید بفهمد این آدرس مربوط به کدام بخش پروژه است. این وظیفه از طریق سیستم URL Routing انجام میشود.
برای نمونه مسیر /products/ میتواند لیست محصولات را نمایش دهد و مسیر دیگری برای مشاهده اطلاعات یک محصول مشخص استفاده شود.
طراحی درست URL به نظم پروژه و خوانایی بهتر ساختار سایت کمک میکند.
View؛ جایی که درخواست تبدیل به پاسخ میشود
View یکی از بخشهایی است که در پروژههای Django زیاد با آن سروکار دارید. درخواست پس از عبور از مسیر مشخصشده در URL به View مربوط میرسد.
View ممکن است اطلاعات را از دیتابیس بخواند، وضعیت کاربر را بررسی کند، محاسبهای انجام دهد یا اطلاعات لازم را برای نمایش به Template بفرستد.
Django از Function-Based View و Class-Based View پشتیبانی میکند. در شروع مسیر، فهمیدن منطق View مهمتر از حفظ کردن شکلهای مختلف آن است.
Template در Django فقط HTML ساده نیست
Template جایی است که دادههای دریافتشده از بکاند به شکل قابل مشاهده برای کاربر در میآیند. Django سیستم Template مخصوص خودش را دارد و میتوان با استفاده از آن دادهها را داخل HTML نمایش داد.
مثلاً View میتواند لیست محصولات را دریافت کند و Template همان لیست را به صورت کارتهای مختلف نمایش دهد.
Template Inheritance نیز اجازه میدهد Header، Footer و ساختارهای مشترک فقط یکبار ایجاد شوند و در صفحات مختلف مورد استفاده قرار بگیرند.
Model و ORM؛ بخش مهم کار با اطلاعات در Django
در پروژه واقعی تقریباً همیشه با داده سروکار دارید. کاربر، مقاله، محصول، سفارش، نظر و پیام همگی باید در پایگاه داده ذخیره و مدیریت شوند.
در Django ساختار این اطلاعات با Model تعریف میشود. مثلاً محصول میتواند شامل نام، توضیحات، قیمت، موجودی و تاریخ ایجاد باشد.
Django از ORM استفاده میکند. ORM بین Python و پایگاه داده قرار میگیرد و اجازه میدهد بسیاری از عملیات دیتابیس با کد Python انجام شوند.
با ORM میتوان داده ایجاد، جستوجو، فیلتر، ویرایش یا حذف کرد و روابط میان اطلاعات را مدیریت کرد.
ارتباط بین دادهها در Django
پروژه واقعی فقط از چند جدول مستقل تشکیل نمیشود. اطلاعات معمولاً به یکدیگر ارتباط دارند؛ مثلاً هر مقاله نویسنده دارد و هر سفارش متعلق به یک کاربر است.
Django برای مدیریت این روابط ابزارهایی مانند ForeignKey، OneToOneField و ManyToManyField در اختیار برنامهنویس قرار میدهد.
درک درست این ارتباطها یکی از مهمترین مهارتها برای طراحی پروژههای واقعی بکاند است.
Migration در Django چه مفهومی دارد؟
وقتی Modelهای پروژه تغییر میکنند، ساختار پایگاه داده نیز باید با این تغییرات هماهنگ شود. Django برای مدیریت این روند از Migration استفاده میکند.
اگر مثلاً فیلد تخفیف به محصول اضافه شود، دیتابیس نیز باید از این تغییر مطلع شود.
Migration سابقه تغییرات ساختار دیتابیس را مدیریت میکند و در پروژههای تیمی اهمیت زیادی دارد.
فرمها و اعتبارسنجی اطلاعات در Django
هر اطلاعاتی که کاربر وارد میکند قابل اعتماد نیست. ممکن است فیلدی خالی باشد، ایمیل اشتباه وارد شود یا دادهای خارج از محدوده ارسال شود.
Django ابزارهایی مانند Form و ModelForm دارد که دریافت و اعتبارسنجی دادهها را ساختاریافتهتر میکنند.
اعتبارسنجی اطلاعات فقط برای تجربه کاربری نیست؛ بخش مهمی از حفظ کیفیت و امنیت اطلاعات پروژه نیز محسوب میشود.
سیستم کاربران، ورود و سطح دسترسی در Django
بسیاری از سایتها به ثبتنام و ورود نیاز دارند. Django سیستم Authentication داخلی دارد که بخشهایی مانند مدیریت کاربر، رمز عبور، ورود و خروج را پوشش میدهد.
علاوه بر ورود، باید مشخص شود هر کاربر اجازه انجام چه کاری را دارد.
Permissions و Groups کمک میکنند سطح دسترسی کاربران مختلف به بخشهای سیستم کنترل شود.
Django Admin؛ پنل مدیریتی کاربردی Django
یکی از قابلیتهای شناختهشده Django پنل Admin داخلی آن است. وقتی Modelهای پروژه تعریف شوند، میتوان بسیاری از آنها را از طریق محیط مدیریتی کنترل کرد.
مدیر سایت میتواند اطلاعات جدید ایجاد کند، دادههای قبلی را تغییر دهد، جستوجو انجام دهد یا اطلاعات مشخصی را حذف کند.
Django Admin قابل شخصیسازی است و میتوان فیلترها، ستونها، فرمها و رفتار قسمتهای مختلف آن را تغییر داد.
Middleware؛ بخشی میان درخواست و پاسخ
Middleware میتواند قبل از رسیدن درخواست به View یا بعد از آماده شدن پاسخ، عملیاتی انجام دهد.
برخی قابلیتهای مربوط به Session، Authentication و امنیت از این طریق مدیریت میشوند.
در پروژههای پیشرفتهتر حتی میتوان Middleware اختصاصی برای نیازهای خاص پروژه ایجاد کرد.
تفاوت Static Files و Media Files
فایلهایی مانند CSS، JavaScript و تصاویر ثابت قالب سایت معمولاً در گروه Static Files قرار میگیرند.
اما فایلهایی که توسط کاربران یا مدیر سایت آپلود میشوند، مانند تصویر پروفایل یا عکس محصول، معمولاً Media Files هستند.
شناخت تفاوت این دو از همان شروع پروژه باعث میشود مدیریت فایلها منظمتر انجام شود.
امنیت در Django
امنیت در بکاند فقط با گذاشتن رمز عبور روی حساب مدیر تمام نمیشود. اطلاعاتی که از کاربر دریافت میشوند باید بررسی شوند و دسترسی به بخشهای مختلف نیز کنترل شود.
Django برای مقابله با برخی مشکلات رایج وب قابلیتهای داخلی دارد، اما توسعهدهنده باید بداند این امکانات چه زمانی و چگونه استفاده میشوند.
CSRF، مدیریت Session، Password Hashing و Permission از موضوعات مهمی هستند که باید در آموزش حرفهای Django بررسی شوند.
تست در پروژه Django چرا مهم است؟
تغییر یک بخش از پروژه ممکن است روی قسمت دیگری تأثیر بگذارد. گاهی این مشکل در ظاهر برنامه مشخص نیست.
تستهای خودکار کمک میکنند رفتار Modelها، Viewها، فرمها و منطق مهم پروژه بررسی شود.
در پروژه حرفهای، Testing بهتر است بخشی از فرآیند توسعه باشد نه کاری که فقط در پایان پروژه انجام میشود.
با Django چه پروژههایی میتوان ساخت؟
فروشگاه اینترنتی
محصول، کاربر، سبد خرید، سفارش و مدیریت اطلاعات.
سامانه رزرو
مدیریت زمان، کاربر، ظرفیت و درخواست رزرو.
وبسایت محتوایی
مقاله، نویسنده، دستهبندی، نظر و پنل مدیریت.
پنل سازمانی
مدیریت کاربران، نقشها، گزارشها و فرآیندها.
شبکه اجتماعی
کاربر، محتوا، تعامل، دنبال کردن و اعلانها.
سامانه آموزشی
دانشجو، دوره، محتوا، سطح دسترسی و پیشرفت آموزشی.
سرفصل کامل آموزش Django
جمعبندی؛ Django را به شکل یک سیستم ببینید
یادگیری Django زمانی جذابتر میشود که بخشهای مختلف آن را جدا از هم نبینید. Model، View، URL، Template، Form، Authentication و Admin در نهایت اجزای یک سیستم واحد هستند.
در یک پروژه واقعی، URL درخواست را به View میرساند، View در صورت نیاز سراغ Model میرود، اطلاعات پردازش میشوند و در نهایت پاسخ مناسب برای کاربر آماده میشود.
وقتی این جریان را بهخوبی درک کنید، Django دیگر مجموعهای از فایلها و دستورهای پراکنده نیست؛ بلکه تبدیل به ابزاری میشود که میتوانید با آن یک مسئله واقعی را به نرمافزاری قابل استفاده تبدیل کنید.
