🚀 فصل ۱: شروع کار با جنگو
تو این فصل قراره جنگو رو نصب کنیم، اولین پروژه رو بسازیم و با ساختار فایلها آشنا بشیم.
تو این فصل قراره جنگو رو نصب کنیم، اولین پروژه رو بسازیم و با ساختار فایلها آشنا بشیم.
📑 فهرست این فصل
🎯 جنگو چیه و چرا ازش استفاده کنیم؟
جنگو یک فریمورک وب نوشتهشده با پایتونه که به ما کمک میکنه سایتهای پیچیده و امن رو سریع بسازیم.
چرا جنگو محبوبه؟
- سرعت توسعه بالا – خیلی چیزا از قبل آمادهست (مثل پنل ادمین)
- امنیت – محافظت پیشفرض در برابر SQL Injection، XSS، CSRF
- مقیاسپذیر – اینستاگرام و پینترست از جنگو استفاده میکنن
- اجتماع بزرگ – مستندات عالی و کتابخونههای فراوان
- ORM قدرتمند – بدون نوشتن SQL با دیتابیس کار میکنی
جنگو از فلسفه Don’t Repeat Yourself (خودت رو تکرار نکن) پیروی میکنه. یعنی اگه یه کاری رو یهبار انجام دادی، نباید مجبور بشی دوباره انجامش بدی.
📦 نصب جنگو
برای نصب جنگو، ابتدا باید پایتون نصب باشه. بعد با pip نصبش میکنیم.
قدم ۱: ساخت محیط مجازی (Virtual Environment)
محیط مجازی به ما کمک میکنه پکیجهای هر پروژه رو جدا نگه داریم. این کار خیلی مهمه!
# ساخت محیط مجازی
python -m venv venv
# فعالسازی در ویندوز
venvScriptsactivate
# اگه فعال شده باشه، (venv) کنار خط فرمان نشون داده میشه
# ساخت محیط مجازی
python3 -m venv venv
# فعالسازی
source venv/bin/activate
قدم ۲: نصب جنگو
# نصب آخرین نسخه جنگو
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 اضافه کنی، وگرنه جنگو نمیشناسدش.
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 یه تابع ساده میسازیم:
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("<h1>سلام دنیا! 👋</h1>")
گام ۲: تعریف URL در اپلیکیشن
یه فایل جدید به اسم urls.py داخل پوشه blog میسازیم:
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello_world, name='hello'),
]
گام ۳: اتصال به URL اصلی پروژه
فایل 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 استفاده کن)