~/icsd.ir — bash
SYSTEM_ONLINE

🚀 فصل ۱: شروع کار با جنگو

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

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

🎯 جنگو چیه و چرا ازش استفاده کنیم؟

جنگو یک فریم‌ورک وب نوشته‌شده با پایتونه که به ما کمک می‌کنه سایت‌های پیچیده و امن رو سریع بسازیم.

چرا جنگو محبوبه؟

  • سرعت توسعه بالا – خیلی چیزا از قبل آماده‌ست (مثل پنل ادمین)
  • امنیت – محافظت پیش‌فرض در برابر SQL Injection، XSS، CSRF
  • مقیاس‌پذیر – اینستاگرام و پینترست از جنگو استفاده می‌کنن
  • اجتماع بزرگ – مستندات عالی و کتابخونه‌های فراوان
  • ORM قدرتمند – بدون نوشتن SQL با دیتابیس کار می‌کنی
💡

اصل DRY در جنگو

جنگو از فلسفه Don’t Repeat Yourself (خودت رو تکرار نکن) پیروی می‌کنه. یعنی اگه یه کاری رو یه‌بار انجام دادی، نباید مجبور بشی دوباره انجامش بدی.

📦 نصب جنگو

برای نصب جنگو، ابتدا باید پایتون نصب باشه. بعد با pip نصبش می‌کنیم.

قدم ۱: ساخت محیط مجازی (Virtual Environment)

محیط مجازی به ما کمک می‌کنه پکیج‌های هر پروژه رو جدا نگه داریم. این کار خیلی مهمه!

📟 ترمینال – ویندوز
# ساخت محیط مجازی
python -m venv venv

# فعال‌سازی در ویندوز
venvScriptsactivate

# اگه فعال شده باشه، (venv) کنار خط فرمان نشون داده میشه
📟 ترمینال – لینوکس/مک
# ساخت محیط مجازی
python3 -m venv venv

# فعال‌سازی
source venv/bin/activate

قدم ۲: نصب جنگو

📟 ترمینال (با venv فعال)
# نصب آخرین نسخه جنگو
pip install django

# بررسی نسخه نصب‌شده
python -m django --version

آفرین!

اگه شماره نسخه نمایش داده شد (مثل 5.0.1)، یعنی جنگو با موفقیت نصب شده.

🏗️ ساخت اولین پروژه

حالا می‌خوایم اولین پروژه‌مون رو بسازیم. اسمش رو می‌ذاریم myshop (یه فروشگاه کوچیک).

📟 ترمینال
# ساخت پروژه جدید
django-admin startproject myshop

# ورود به پوشه پروژه
cd myshop

# اجرای سرور تست
python manage.py runserver

حالا اگه به آدرس http://127.0.0.1:8000 بری، باید صفحه‌ی خوش‌آمدگویی جنگو (با راکتش 🚀) رو ببینی!

📂 ساختار پروژه

بیا ببینیم چه فایل‌هایی ساخته شده:

📂 ساختار پوشه‌ها
myshop/
├── manage.py              # اسکریپت مدیریت پروژه
└── myshop/
    ├── __init__.py        # نشون می‌ده این پوشه یک پکیج پایتونه
    ├── settings.py        # ⭐ تنظیمات پروژه
    ├── urls.py            # ⭐ مسیرهای URL
    ├── asgi.py            # تنظیمات async
    └── wsgi.py            # تنظیمات سرور

توضیح فایل‌های کلیدی:

فایل کاربرد
manage.py دستور خط فرمان برای مدیریت پروژه (migrate, runserver و…)
settings.py تمام تنظیمات پروژه (دیتابیس، اپلیکیشن‌ها، زبان و…)
urls.py تعریف می‌کنه که هر URL به کدوم View برده بشه
wsgi.py برای دیپلوی روی سرور لازمه

🎨 معماری MTV (مهم!)

جنگو از معماری MTV استفاده می‌کنه که شبیه MVC هست ولی با اسامی متفاوت:

📦 Model

داده

ساختار دیتابیس و منطق داده‌ها

🎨 Template

نمایش

فایل‌های HTML که به کاربر نشون داده میشن

⚙️ View

منطق

پل بین Model و Template – منطق برنامه

🔄

جریان درخواست در جنگو

۱. کاربر URL رو وارد می‌کنه
۲. جنگو URL رو با urls.py چک می‌کنه
۳. View مربوطه اجرا میشه
۴. View با Model کار می‌کنه (دیتابیس)
۵. Template رندر میشه و به کاربر برمی‌گرده

📱 ساخت اولین اپلیکیشن

در جنگو، یک پروژه می‌تونه چندین اپلیکیشن داشته باشه. هر اپلیکیشن یک قابلیت مجزا رو ارائه می‌ده. مثلاً:

  • اپ products برای مدیریت محصولات
  • اپ users برای مدیریت کاربران
  • اپ orders برای سفارش‌ها
📟 ترمینال
# ساخت اپلیکیشن جدید
python manage.py startapp blog

حالا یه پوشه blog ساخته میشه:

📂 ساختار اپلیکیشن
blog/
├── __init__.py
├── admin.py        # ⭐ تنظیمات پنل ادمین
├── apps.py         # تنظیمات اپلیکیشن
├── migrations/     # تغییرات دیتابیس
├── models.py       # ⭐ مدل‌های داده
├── tests.py        # تست‌ها
└── views.py        # ⭐ ویوها (منطق)
⚠️

قدم بعد از ساخت اپ – فراموش نکن!

باید اپلیکیشن جدید رو به INSTALLED_APPS در فایل settings.py اضافه کنی، وگرنه جنگو نمی‌شناسدش.

myshop/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',  # ← اپ جدید رو اینجا اضافه کن
]

💻 مثال عملی: صفحه “سلام دنیا”

حالا با هم یه صفحه ساده می‌سازیم که “سلام دنیا” نمایش بده.

آسان

گام ۱: ساخت View

توی فایل blog/views.py یه تابع ساده می‌سازیم:

blog/views.py
from django.http import HttpResponse

def hello_world(request):
    return HttpResponse("<h1>سلام دنیا! 👋</h1>")

آسان

گام ۲: تعریف URL در اپلیکیشن

یه فایل جدید به اسم urls.py داخل پوشه blog می‌سازیم:

blog/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.hello_world, name='hello'),
]

آسان

گام ۳: اتصال به URL اصلی پروژه

فایل myshop/urls.py رو ویرایش می‌کنیم:

myshop/urls.py
from django.contrib import admin
from django.urls import path, include  # ← include اضافه شد

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),  # ← این خط رو اضافه کن
]

آسان

گام ۴: تست!

📟 ترمینال
python manage.py runserver

حالا برو به آدرس http://127.0.0.1:8000/blog/hello/ و نتیجه رو ببین! 🎉

🎯

تبریک!

اولین صفحه جنگوت رو ساختی! حالا متوجه شدی که سه چیز اصلی برای ساخت یک صفحه نیازه: View، URL و اتصال به urls اصلی.

📝 تمرین این فصل

آسان

تمرین ۱: صفحه درباره ما

یه View جدید بساز به اسم about که در آدرس /blog/about/ یه پیام درباره خودت نمایش بده.

متوسط

تمرین ۲: نمایش زمان فعلی

یه View بساز که زمان فعلی سرور رو نمایش بده. (راهنمایی: از ماژول datetime استفاده کن)

نمایش سایت

رنگ سایت
حالت نمایش
اندازهٔ متن
خوانایی

این تنظیمات فقط روی مرورگر شما ذخیره می‌شود.