جنگو
شرح کوتاهی برای این دسته بندی ثبت نشده است.
9
درس
- معرفی فریمورک جنگو اگر بخواهید یک وبسایت داینامیک را از صفر با پایتون خام بنویسید، باید هفتهها وقت صرفِ طراحی سیستم احراز هویت، امنیت پایگاهداده و مدیریت پنل کاربری کنید. اینجاست که سوال جنگو چیست معنا پیدا میکند. جنگو یک میانبر مهندسیشده است؛ فریمورکی که به شعار "The Framework for Perfectionists with Deadlines" وفادار مانده تا شما به جای چرخ اختراع کردن، روی منطق بیزنس خود تمرکز کنید. چرا این درس با بقیه متفاوت است؟ بسیاری از منابع، جنگو را صرفاً یک ابزار کتابخانهای معرفی میکنند، اما حقیقت این است که Django یک اکوسیستم کامل است. در این بخش، ما از تعاریف تئوریک فاصله میگیریم و مستقیماً به سراغ کدهایی میرویم که اینستاگرام و پینترست را روی پاهایشان نگه داشتهاند. نقشه راه این واحد درسی: کالبدشکافی فلسفه Batteries Included: چرا بعد از نصب جنگو، تقریباً به هیچ کتابخانه جانبی برای کارهای پایه نیاز ندارید؟ تحلیل بازار کار پایتون جنگو: آیا در سال ۲۰۲۶، یادگیری این فریمورک هنوز هم بلیت ورود به شرکتهای تراز اول است؟ تفاوت کلیدی: چرا در پروژههای مقیاسپذیر، مقایسه جنگو و فلاسک همیشه به نفع ساختاریافتگی جنگو تمام میشود؟ یک نکته از تجربه ما در پروژه: خیلی از توسعهدهندگان تازهکار میپرسند: «آیا باید قبل از جنگو، پایتون را قورت بدهم؟». پاسخ ما منفی است. اگر با مفاهیم Class و Decorator در پایتون آشنایی نسبی دارید، همین حالا ترمینال را باز کنید؛ چون بهترین راه برای درک اینکه جنگو چیست، دست به کد شدن و شروع کردن است.
- نصب جنگو بسیاری از تازهکارها با عجله و بدون رعایت اصول فنی، شروع به نصب پکیجها میکنند و درست وسط پروژه با خطاهای عجیب و غریبِ ورژنها روبرو میشوند. در این درس، ما از ابتدا خشت اول را درست میگذاریم. فرقی نمیکند کاربر ویندوز باشید یا مک و لینوکس؛ مسیر آموزش نصب Django برای همه شما یکسانسازی شده است. پیش از هر چیز: آیا پایتون آماده است؟ جنگو یک فریمورک پایتونی است، پس بدیهی است که اولین مهره این بازی، خودِ پایتون باشد. اما فقط داشتن پایتون کافی نیست. ما باید مطمئن شویم که ابزار مدیریت پکیجهای پایتون یعنی pip نیز به درستی در دسترس است. بدون pip، عملاً هیچ راهی برای احضار جنگو به سیستمتان ندارید. چرا در این درس از Virtual Environment استفاده خواهیم کرد؟ تصور کنید دو پروژه متفاوت دارید؛ یکی با نسخه قدیمی جنگو و دیگری با آخرین نسخه ۲۰۲۶. اگر هر دو را مستقیماً روی سیستم نصب کنید، یکی از آنها قطعاً از کار میافتد. استفاده از Virtual Environment (محیط مجازی) به شما اجازه میدهد برای هر پروژه یک اتاق ایزوله داشته باشید. این اولین نشانه حرفهای شدن شما در بازار کار پایتون است. آنچه در این درس یاد میگیرید: تست سلامت پیشنیازها در ترمینال. ایزولهسازی پروژه برای جلوگیری از تداخل نسخهها. اجرای دستور نصب جنگو به روشی که در هیچ آپدیتی به مشکل نخورید. تایید نهایی و بررسی ورژن جنگو برای اطمینان از صحت نصب.
- ایجاد پروژه در جنگو بسیاری از کسانی که شروع به آموزش پایتون میکنند، وقتی برای اولین بار با دستور ساخت پروژه در جنگو روبرو میشوند، از تعداد زیاد فایلهای تولید شده تعجب میکنند. اما نگران نباشید؛ جنگو برخلاف فریمورکهای شلوغ، هیچ فایل اضافهای نمیسازد. هر فایلی که در پوشه پروژه خود میبینید، مثل یک چرخدنده در موتور سایت شما عمل میکند. شروع عملیات: ایجاد اسکلت در این مرحله، ما با استفاده از ترمینال و ابزار django-admin دستور میدهیم که پوشهبندی استاندارد پروژه ما ساخته شود. این اولین قدم برای تبدیل شدن به یک توسعهدهنده وب است. شما یاد میگیرید که چطور یک محیط خام را به یک وبسایت آمادهی توسعه تبدیل کنید. چرا درک ساختار فایلهای جنگو حیاتی است؟ اگر ندانید فایل settings.py کجا قرار دارد یا نقش manage.py چیست، هر چقدر هم که در پایتون حرفهای باشید، در جنگو گم خواهید شد. در این درس، ما فقط کد نمیزنیم؛ بلکه یاد میگیریم: تفاوت بین Project و App در معماری جنگو چیست. تنظیمات اولیه دیتابیس و زبان سایت را کجا انجام دهیم. چطور سرور داخلی جنگو را برای اولین بار روشن کنیم تا خروجی زحماتمان را ببینیم. هدف ما در این درس: ما میخواهیم پروژهای به نام job_hunter بسازیم که قرار است میزبان تمام بخشهای سامانه رهگیری استخدامی ما باشد. این پروژه، قلب تپنده تمام عملیاتهای CRUD (ایجاد، خواندن، ویرایش و حذف) شما در آینده خواهد بود. نکته: به جای حفظ کردن نام فایلها، سعی کنید کاربرد هر کدام را درک کنید. وقتی بفهمید urls.py مثل تابلوی راهنمای خیابانهای شهر شماست، دیگر هیچوقت مسیر توسعه پروژه را گم نمیکنید.
- ساخت برنامه (App) در جنگو در دنیای جنگو، یک ضربالمثل معروف وجود دارد: «پروژه بساز، اما با اپلیکیشنها زندگی کن!» اگر درس قبل را به ساختن زمین و فونداسیون یک ساختمان تشبیه کنیم، ساخت اپ در جنگو دقیقاً همان مرحلهای است که اتاقها، آشپزخانه و بخشهای کاربردی ساختمان را طراحی میکنید. در این درس، ما قرار است اولین بخش واقعی از پروژه JobTrack را با نام jobs را ایجاد کنیم. چرا جنگو ما را مجبور به ساخت App میکند؟ بسیاری از تازهکارها میپرسند: «چرا نمیتوانیم همهی کدها را همانجای اول بنویسیم؟» پاسخ در یک کلمه است: نظم.تصور کنید بخواهید بخش «مدیریت آگهیها»، «پنل کاربری» و «سیستم پرداخت» را همگی در یک پوشه شلوغ رها کنید؛ نتیجه چیزی جز یک کلاف سردرگم نخواهد بود. مفهوم Django Apps به شما این قدرت را میدهد که پروژهتان را به قطعات کوچک، مستقل و قابلفهم تقسیم کنید. این یعنی اگر روزی بخواهید بخش آگهیها را در پروژه دیگری هم استفاده کنید، به سادگی میتوانید آن پوشه را کپی و منتقل کنید. در این درس چه چیزی را تجربه میکنید؟ ما در این واحد درسی، نه تنها با دستور startapp آشنا میشویم، بلکه یاد میگیریم چطور این نوزاد تازهمتولدشده را به «لیست اپلیکیشنهای نصب شده» در فایل تنظیمات معرفی کنیم.مباحثی که قرار است با هم جلو ببریم عبارتند از: تفاوت کلیدی و ساختاری بین Project و App. اجرای دستور ساخت اولین اپلیکیشن برای سامانه رهگیری استخدام. آموزش ثبت اپلیکیشن در بخش INSTALLED_APPS (جایی که اکثر ارورهای مبتدیها از آنجا شروع میشود!). بررسی فایلهای داخلی اپلیکیشن مثل models.py و views.py که مغز متفکر برنامه ما هستند. هدف نهایی: ایجاد بخش مدیریت آگهیها ما نام این اپلیکیشن را jobs میگذاریم. این بخش قرار است مسئول تمام عملیاتهای مربوط به ثبت، ویرایش و نمایش آگهیهای استخدامی باشد. با پایان این درس، شما دیگر فقط یک اسکلت خالی ندارید؛ بلکه اولین واحد عملیاتی پروژهتان را آماده کردهاید تا در درسهای بعدی به آن جان ببخشیم.
- مدل ها در جنگو به دنیای واقعی جنگو خوش آمدید! اگر تا اینجای کار فقط اسکلتبندی پروژه را انجام دادیم، حالا وقت آن است که به پروژه رهگیری آگهی های استخدام خودمان حافظه اضافه کنیم. در این درس، سراغ مدلها در جنگو (Django Models) میرویم؛ یعنی همان جایی که مشخص میکنیم دیتابیس ما قرار است چه اطلاعاتی را از یک آگهی شغلی در خود نگه دارد. جادوی پایتون به جای کدهای پیچیده SQL بسیاری از کسانی که تازه وارد مسیر آموزش جنگو میشوند، از کار با پایگاه داده میترسند. اما خبر خوب این است که در جنگو، شما نیازی به نوشتن حتی یک خط کد SQL برای ساخت جداول ندارید. با استفاده از قابلیت ORM جنگو، شما فقط با کدهای ساده پایتونی تعیین میکنید که مثلاً فیلد «نام شرکت» متنی باشد یا «میزان حقوق» به صورت عددی ذخیره شود. جنگو خودش بقیه کارهای سخت را پشت صحنه انجام میدهد. چرا درک مدلها برای هر برنامهنویسی حیاتی است؟ اگر مدلهای پروژه را اشتباه طراحی کنید، کل ساختمان سایت شما روی زمین لرزانی بنا میشود. کلمات کلیدی مثل ساخت دیتابیس در جنگو یا فیلدهای مدل (Model Fields) دقیقاً به همین بخش اشاره دارند. در این درس، ما یاد میگیریم که چطور مدل Job را بسازیم تا اطلاعاتی مثل: عنوان شغلی و توضیحات آگهی نام شرکت و موقعیت مکانی تاریخ ثبت و وضعیت وضعیت اپلای را به شکلی منظم ذخیره کنیم. این اطلاعات، سوخت اصلی تمام بخشهای بعدی سایت ما یعنی ویوها و قالبها خواهند بود. در این درس چه چیزی یاد میگیرید؟ ما فقط کد نمیزنیم، بلکه یاد میگیریم چطور مثل یک معمار داده فکر کنیم. مفاهیمی که قرار است با هم جلو ببریم شامل موارد زیر است: انتخاب درست انواع فیلدها در جنگو (از متنهای کوتاه تا توضیحات طولانی). کار با دستورات حیاتی Migrations برای اعمال تغییرات در دیتابیس. شخصیسازی نمایش مدلها در پنل ادمین برای مدیریت راحتتر آگهیها. هدف نهایی ما این است که بعد از این درس، شما یک پایگاه داده واقعی و زنده داشته باشید که آمادهی ذخیره کردن اولین آگهی شغلی شماست.
- پنل مدیریت جنگو به یکی از جذابترین ایستگاههای مسیر خوش آمدید! اگر بگویم جنگو بخشی از شهرت جهانیاش را مدیون همین یک بخش است، اغراق نکردهام. در این واحد، سراغ پنل مدیریت جنگو (Django Admin) میرویم؛ ابزاری که به شما اجازه میدهد بدون نوشتن حتی یک خط کد فرانتاند، یک مرکز کنترل کامل برای مدیریت دادههای سایت داشته باشید. مرکز فرماندهی پروژه JobTrack تصور کنید دیتابیس شما آماده است، اما برای اضافه کردن یک آگهی جدید یا تغییر دستهبندیها، نمیتوانید مدام وارد محیط کدنویسی شوید. اینجاست که پنل ادمین جنگو مثل یک ناجی ظاهر میشود. شما یک رابط گرافیکی حرفهای در اختیار دارید که در آن میتوانید آگهیهای استخدام را ثبت، ویرایش یا حذف کنید. کلمات کلیدی مثل مدیریت محتوا در جنگو یا سفارشیسازی پنل ادمین دقیقاً به همین توانایی فوقالعاده اشاره دارند. چرا یادگیری Django Admin برای شما ارزش افزوده ایجاد میکند؟ بسیاری از فریمورکهای دیگر شما را مجبور میکنند برای بخش مدیریت، هفتهها وقت بگذارید و فرم بسازید. اما جنگو این پنل را به صورت آماده در اختیارتان قرار میدهد. در این درس، تمرکز ما روی موارد زیر است: ساخت کاربر مدیریت (Superuser): ایجاد دسترسی کامل به تمام بخشهای سایت. ثبت مدلها در ادمین: معرفی جداولی که در درس قبل ساختیم به محیط مدیریتی. بهینهسازی نمایش: استفاده از قابلیتهایی مثل فیلترها و کادر جستجو برای پیدا کردن سریع یک آگهی در میان هزاران داده. امنیت و کنترل در دستان شما امنیت در توسعه وب با پایتون حرف اول را میزند. پنل مدیریت جنگو با یک سیستم احراز هویت داخلی قدرتمند محافظت میشود. شما یاد میگیرید که چطور دسترسیها را محدود کنید تا فقط افراد مجاز بتوانند به اطلاعات حساس سامانه JobTrack دست بزنند. این یعنی شما علاوه بر برنامهنویس، به یک مدیر سیستم هوشمند هم تبدیل میشوید.
- ویو ها در جنگو به موتور متفکر وبسایت خود خوش آمدید! اگر دیتابیس را قلب و قالبها را ویترین سایت بدانیم، ویو در جنگو (Django Views) دقیقاً همان مغز هوشمندی است که تصمیم میگیرد چه اطلاعاتی، در چه زمانی و به چه شکلی به کاربر نمایش داده شود. در این واحد، یاد میگیریم چطور درخواستهای کاربران را مدیریت کنیم و با استفاده از منطق پایتونی، دادهها را از مدلها استخراج کرده و به صفحه نمایش بفرستیم. ویو در جنگو؛ پل ارتباطی کاربر و دیتابیس در دنیای توسعه وب با جنگو، هر بار که شخصی آدرسی را در مرورگر وارد میکند، یک "درخواست" (Request) به سمت سرور ارسال میشود. وظیفه اصلی شما به عنوان برنامهنویس این است که در فایل views.py مشخص کنید برای این درخواست چه پاسخی (Response) ارسال شود. چرا در پروژه JobTrack به ویوها نیاز مبرم داریم؟ تصور کنید صدها آگهی استخدام در پنل مدیریت ثبت کردهاید. بدون نوشتن یک ویوی درست، این آگهیها در دیتابیس حبس میمانند و هیچ کاربری نمیتواند آنها را ببیند. در این درس، ما یاد میگیریم: استخراج هوشمند دادهها: چطور فقط آگهیهای "فعال" را از مدل Job فراخوانی کنیم. ارسال داده به قالب: چطور لیست شغلها را به دست فایلهای HTML برسانیم تا کاربر آنها را در محیطی زیبا مشاهده کند. مدیریت پاسخها: آشنایی با انواع خروجیها، از یک متن ساده گرفته تا صفحات پیچیده وب. رویکردهای مدرن در طراحی ویوها (FBVs vs CBVs) در سال ۲۰۲۶، انتخاب بین ویوهای تابعی (Function-Based Views) و ویوهای کلاسمحور (Class-Based Views) یکی از بحثهای داغ میان توسعهدهندگان است. ویوهای تابعی به دلیل سادگی و خوانایی بالا برای شروع عالی هستند، در حالی که کلاسها قدرت عجیبی در جلوگیری از تکرار کد (DRY) دارند. ما در این واحد، هر دو روش را بررسی میکنیم تا شما بتوانید در پروژههای واقعی، بهترین ابزار را برای حل مسئله انتخاب کنید.
- Template ها در جنگو اگر تا اینجای کار درگیر منطقهای پایتونی و جداول دیتابیس بودید، حالا وقت آن است که تمام آن دادههای خام را به یک ظاهر زیبا و کاربرپسند تبدیل کنید. تمپلیت در جنگو (Django Templates) همان لایه نهایی است که کاربر مستقیماً با آن تعامل دارد. در این واحد، یاد میگیریم چطور دادههای آگهیهای استخدام را از ویوها بگیریم و با استفاده از جادوی HTML و موتور قدرتمند جنگو، آنها را به شکلی حرفهای نمایش دهیم. موتور تمپلیت جنگو؛ فراتر از یک HTML ساده اشتباه نکنید! فایلهای تمپلیت فقط کدهای استاتیک HTML نیستند. جنگو از یک زبان نشانهگذاری هوشمند به نام DTL (Django Template Language) استفاده میکند. این زبان به شما اجازه میدهد منطقهای برنامهنویسی را مستقیماً وارد ظاهر سایت کنید. تمپلیت جنگو به شما اجازه میدهد بدون نوشتن کدهای پیچیده جاوا اسکریپت، لیست آگهیها را با حلقهها نمایش دهید یا برای کاربران لاگین شده پیامهای اختصاصی بفرستید. چرا سیستم تمپلیتینگ برای پروژه JobTrack حیاتی است؟ در یک سایت کاریابی، شما با دادههای متغیر سر و کار دارید. یک روز ۱۰ آگهی دارید و روز دیگر ۱۰۰۰ آگهی. سیستم تمپلیتینگ در جنگو به شما کمک میکند یک قالب ثابت طراحی کنید و اجازه دهید جنگو خودش محتوا را درون آن تزریق کند. در این درس یاد میگیرید: ارثبری تمپلیت (Template Inheritance): چطور یک ساختار کلی برای سایت بسازید و فقط بخشهای میانی را تغییر دهید تا از تکرار کد جلوگیری کنید. تگها و فیلترها: چطور تاریخها را شمسی کنید یا متنهای طولانی را به صورت خودکار خلاصه کنید. مدیریت فایلهای استاتیک: نحوه اضافه کردن CSS و تصاویر برای جذابتر کردن ظاهر پروژه. استاندارد طراحی در سال ۲۰۲۶: سرعت و سئو طبق الگوریتمهای جدید گوگل، نحوه رندر شدن کدهای سمت سرور تاثیر مستقیمی بر تجربه کاربری (UX) و رتبه سئو دارد. سیستم تمپلیت جنگو به دلیل رندرینگ سریع در سمت سرور (SSR)، یکی از بهترین گزینهها برای موتورهای جستجوست. در این واحد یاد میگیرید چطور کدهای تمپلیت را بهینهسازی کنید تا صفحات آگهی استخدام شما با سرعت برق و باد لود شوند و در نتایج گوگل بدرخشند. مفاهیم کلیدی که در این واحد مسلط میشوید: فولدر Templates: محلی که تمام فایلهای ظاهری پروژه در آن قرار میگیرند. نحو (Syntax) تگها: کار با ابزارهایی مثل {% for %} و {{ variable }}. یکپارچگی با ویوها: چطور دادههایی که در واحد قبلی با ListView و DetailView ساختیم را در اینجا فراخوانی کنیم. آمادهاید تا آگهیهای استخدام JobTrack را از کدهای خشک پایتونی به یک سایت واقعی و شکیل تبدیل کنیم؟ بیایید با هم اولین قدم، یعنی تنظیمات پوشه تمپلیت را در فایل settings.py بررسی کنیم.
- URL ها در جنگو برای اینکه کاربر به محتوای سایت شما برسد، ابتدا باید آدرسی را در مرورگر تایپ کند. این آدرسها تصادفی ساخته نمیشوند. در واقع، سیستم آدرسدهی در جنگو (Django URL Dispatcher) مثل یک مرکز تلفن هوشمند عمل میکند؛ درخواست کاربر را میگیرد، آن را تحلیل میکند و دقیقاً به همان ویوی (View) مناسب وصل میکند. در پروژه JobTrack، طراحی یک ساختار URL تمیز و منطقی، تفاوت بین یک سایت آماتور و یک پلتفرم حرفهای را مشخص میکند. چرا URLها ویترین اصلی سئو سایت شما هستند؟ در استانداردهای سئو ۲۰۲۶، گوگل به ساختار آدرسها به اندازه محتوای صفحه اهمیت میدهد. کلمات کلیدی پرجستجویی مثل ساختار URL بهینه یا آموزش مسیریابی در جنگو نشان میدهند که توسعهدهندگان به دنبال راههایی برای فرار از آدرسهای گنگ و عددی هستند. شما یاد میگیرید که چطور آدرسهای خشک مثل job/1 را به آدرسهای معنادار و انسانپسند (Human-readable URLs) تبدیل کنید که هم کاربر از کلیک روی آن لذت ببرد و هم موتورهای جستجو موضوع صفحه شما را در یک ثانیه درک کنند. در این درس چه چیزی یاد میگیریم؟ ما فقط به نوشتن چند مسیر ساده بسنده نمیکنیم. در این درس، عمیقاً وارد مباحث زیر میشویم: داینامیک بودن آدرسها: چطور برای هزاران آگهی مختلف، فقط با یک الگو، آدرس اختصاصی بسازیم. نظم در پروژههای بزرگ: یاد میگیریم چطور با جدا کردن فایلهای urls.py در هر اپلیکیشن، از شلوغی و تداخل کدها جلوگیری کنیم. امنیت و اعتبار: با استفاده از محدودکنندههای مسیر (Path Converters)، اجازه نمیدهیم آدرسهای نامعتبر فشاری به دیتابیس سایت وارد کنند. ارزش واقعی برای پروژه JobTrack تصور کنید کاربر میخواهد آدرس یک آگهی استخدام پایتون را برای دوستش بفرستد. آدرسی مثل jobtrack.com/jobs/python-developer-tehran بسیار معتبرتر از یک آدرس عددی نامفهوم است. ما در این درس، یاد میگیریم چطور با استفاده از Slug در جنگو، آدرسهایی بسازیم که هم نرخ کلیک (CTR) را بالا ببرند و هم ماندگاری برند شما را در ذهن کاربر تضمین کنند. مفاهیم کلیدی که بر آنها مسلط میشوید: تابع path و re_path: ابزارهای اصلی برای تعریف مسیرهای ساده و پیچیده. مفهوم Namespace: جلوگیری از گیج شدن جنگو وقتی چندین اپلیکیشن با نامهای مشابه داریم. Reverse Routing: یادگیری روشی که باعث میشود با تغییر یک آدرس، لینکهای کل سایت به صورت خودکار اصلاح شوند. آمادهاید تا نقشهکشی سایت JobTrack را شروع کنیم؟ بیایید با اولین قدم، یعنی درک تفاوت فایل URL اصلی پروژه و فایلهای URL اختصاصی هر اپلیکیشن شروع کنیم.