ساختار کلی پروژه جنگو
پس از ایجاد یک پروژه جنگو با دستور django-admin startproject myproject، یک ساختار پوشهای بهصورت زیر ایجاد میشود:
myproject/
│-- manage.py
│-- myproject/
│ │-- __init__.py
│ │-- settings.py
│ │-- urls.py
│ │-- asgi.py
│ │-- wsgi.py
│-- manage.py
│-- myproject/
│ │-- __init__.py
│ │-- settings.py
│ │-- urls.py
│ │-- asgi.py
│ │-- wsgi.py
اگر یک اپلیکیشن جدید هم ایجاد کنیم، ساختار پروژه به شکل زیر در میآید:
myproject/
│-- manage.py
│-- myproject/
│ │-- __init__.py
│ │-- settings.py
│ │-- urls.py
│ │-- asgi.py
│ │-- wsgi.py
│-- myapp/
│ │-- __init__.py
│ │-- admin.py
│ │-- apps.py
│ │-- models.py
│ │-- tests.py
│ │-- views.py
│ │-- migrations/
│ │-- __init__.py
│-- manage.py
│-- myproject/
│ │-- __init__.py
│ │-- settings.py
│ │-- urls.py
│ │-- asgi.py
│ │-- wsgi.py
│-- myapp/
│ │-- __init__.py
│ │-- admin.py
│ │-- apps.py
│ │-- models.py
│ │-- tests.py
│ │-- views.py
│ │-- migrations/
│ │-- __init__.py
توضیح فایلها و پوشهها
۱. فایلهای اصلی پروژه (داخل پوشه پروژه اصلی)
- manage.py: ابزاری برای اجرای دستورات مدیریتی جنگو مانند اجرای سرور، انجام مهاجرتها و ایجاد سوپر یوزر.
- settings.py: تنظیمات اصلی پروژه از جمله پیکربندی پایگاه داده، اپلیکیشنهای نصبشده و مسیرهای استاتیک.
- urls.py: فایل مدیریت مسیرها (URLs) که مشخص میکند هر درخواست به کدام ویو هدایت شود.
- wsgi.py و asgi.py: برای اجرای پروژه در سرورهای WSGI یا ASGI استفاده میشوند.
- __init__.py: این فایل نشان میدهد که دایرکتوری مربوطه یک ماژول پایتون است.
۲. ساختار یک اپلیکیشن (پوشه myapp/)
- models.py: شامل مدلهای پایگاه داده که به کمک ORM جنگو مدیریت میشوند.
- views.py: شامل توابع یا کلاسهایی که درخواستها را پردازش کرده و پاسخ مناسب را برمیگردانند.
- urls.py (بهصورت دستی ایجاد میشود): مسیرهای مربوط به این اپلیکیشن را مدیریت میکند.
- admin.py: تنظیمات مربوط به پنل ادمین برای مدیریت دادههای مدلها.
- apps.py: تنظیمات اپلیکیشن در سطح پروژه.
- migrations/: پوشهای برای مدیریت تغییرات پایگاه داده.
- tests.py: شامل تستهای خودکار برای بررسی صحت عملکرد اپلیکیشن.
با این ساختار، پروژه جنگو بهصورت ماژولار طراحی شده که توسعه، نگهداری و مقیاسپذیری آن را آسان میکند.
