ایجاد پروژه
ایجاد پروژه در جنگو، شروع ساخت وبسایت خواهد بود. با رفتن به دایرکتوری پروژه (دایرکتوری که در بخش قبل برای آن فضای اختصاصی ایجاد شد) با در نظر داشتن فعال بودن فضای اختصاصی، دستور زیر را اجرا میکنیم:
(venv) django-admin startproject tutorial
در اینجا projectname یا همان نام پروژه ای که قرار است روی آن کار کنیم را tutorial
انتخاب کردیم.
با اجرای دستور فوق، لیستی از فایلها و فولدرها در یک دایرکتوری جدید به نام پروژه ایجاد میگردد که جهت مشاهده درختواره پروژه میتوان از دستور tree /F در محیط ترمینال بهره گرفت
└───Tutorial-Django
│ manage.py
│
└───tutorial
asgi.py
settings.py
urls.py
wsgi.py
__init__.py
همه فایلها و فولدرهای ایجاد شده داخل دایرکتوری پروژه، دارای معانی خاص هستند که در ادامه آموزش با برخی از آنها آشنا خواهیم شد، اما در حال حاضر، ذکر این نکته حائز اهمیت خواهد بود که بدانیم، منظور از دایرکتوری پروژه چیست و چه فایلها و یا فولدرهایی را دربرمیگیرد. حال میتوان شروع به ساخت اپهای اختصاصی پروژه کرد.
‼ در صورتیکه در دایرکتوری جنگوی پروژه قرار داشته باشیم، به دلیل اینکه دایرکتوری venv
خارج از دایرکتوری جنگو میباشد، برای فعال کردن فضای اختصاصی باید حتما بهصورت زیر دستور اجرا گردد:
..\venv\script\activate
بعد از ایجاد پروژه، به دایرکتوری Tutorial-Django در ترمینال یا همان محیط cmd رفته و اقدام به اجرای پروژه جنگو با دستور ذیل کرده تا از درستی نصب و پیکربندی جنگو اطمینان حاصل کنیم:
(venv) python manage.py runserver
در صورتیکه سرور به درستی اجرا گردد، متن ذیل به نمایش درخواهد آمد که اعلام میکند، پروژه در آدرس http://127.0.0.1:8000 قابل نمایش است. میتوان در هر زمان، با فشردن کلیدهای [CTRL]
[C]
اجرای پروژه را متوقف کرد.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 13, 2025 - 14:23:12
Django version 5.2.6, using settings 'tutorial.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/5.2/howto/deployment/
با رفتن به آدرس http://127.0.0.1:8000 در مرورگر، میتوان صفحه آغازین پروژه جنگو را ملاحظه نمود:
ایجاد اپ
منظور از یک app در یک پروژه جنگو یعنی یک ماژول مستقل از کل پروژه که یک بخش خاص از منطق یا ویژگیهای برنامه را پیادهسازی میکند. در واقع میشود یک پروژه جنگو را معادل با مجموعهای از چند app دانست که هر کدام برای انجام کار منحصر بفردی تعریف شدهاند.
اگر سرور همچنان در حال اجرا باشد نمیتوان دستورات ایجاد اپ را اجرا کرد، برای توقف سرور میتوان از کلیدهای [CTRL] [BREAK]
یا [CTRL]+[C]
استفاده کرده تا سرور متوقف شود. در اینصورت ترمینال دوباره به فضای اختصاصی پروژه یا همان venv بازمیگردد.
با اجرای دستور کدی زیر، نسبت به ایجاد اپ و یا اپهای موردنیاز پروژه اقدام میکنیم.
(venv) python manage.py startapp coreapp
زمانیکه دستور startapp
را اجرا کنیم، جنگو فایلهای موردنیاز اپ را بصورت پیشفرض در یک دایرکتوری جدید همنام با app ایجاد شده، ایجاد خواهد کرد.
└───Tutorial-Django
│ db.sqlite3
│ manage.py
│
├───coreapp
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └───migrations
│ __init__.py
│
└───tutorial
asgi.py
settings.py
urls.py
wsgi.py
__init__.py
هر فایل وظیفه و نقش مشخص و منحصربهفرد خود را خواهد داشت
✔️ models.py ⟵ تعریف جداول دیتابیس (مدلها)
✔️ views.py ⟵ منطق پردازش درخواستها (Controller)
❌ urls.py ⟵ مسیرهای مربوط به app (بصورت پیشفرض نبوده و میبایست ایجاد گردد)
❌ /templates ⟵ دایرکتوری فایلهای HTML مربوط به app (بصورت پیشفرض نبوده و میبایست ایجاد گردند)
✔️ admin.py ⟵ مدیریت app در پنل Admin
✔️ apps.py ⟵ تنظیمات پایهای app
✔️ /migrations ⟵ دایرکتوری برای نگهداری تغییرات ساختاری دیتابیس (schema)
❗❗❗ باید توجه داشت که برای یک پروژه، بسته به نیاز، میتوان چندین app، برای نقشها و کاربردهای متفاوت تعربف نمود. در پایهترین حالت، میتوان یک اپ با عنوان coreapp
شامل پایگاههای اصلی داده، مسیردهی URL و منطق تجاری پروژه را به توسعه وب اپلیکیشن اختصاص داده و یک اپ دیگر مختص کاربرهای پروژه تحت عنوان clientapp
، متشکل از پایگاههای داده و مدیریت کاربران و تعریف مسیرهای مربوط به ایجاد اکانت، ورود و خروج تعریف نمود و در نهایت یک اپ برای تعامل پروژه با دنیای بیرون و برنامههای دیگر و مدیریت رابطهای کاربردی یا همان APIها با نام apiapp
، ایجاد کرد.
(venv) python manage.py startapp clientapp
❗❗❗ فرایند جداسازی پروژه در اپها، اجباری نیست ولی موجب تمیزکاری در پروژههای بزرگ و سنگین خواهد شد. ساختار دایرکتوری جنگوی پروژه بعد از ایجاد appها بشکل زیر خواهد بود.
برای اپ مربوط به رابطهای برنامهنویسی کاربری API بر بستر Django REST Framework، در فصل مربوطه نسبت به ایجاد و تعریف آن اقدام خواهیم نمود.
معرفی اپ به ساختار پروژه
بعد از ایجاد اپلیکیشن، میبایست فرآیند معرفی آن به ساختار پروژه را طی کرد، چرا که پس از ایجاد اپ، پروژه هیچ شناختی نسبت به اپ جدید ندارد. بدین منظور، کافیست نام اپ ایجاد شده را به لیست اپهای پروژه جنگو اضافه کنیم. برای این کار کافیست به فایل settings.py پروژه رفته و از قسمت INSTALLED_APPS
نام appهای ایجاد شده را اضافه میکنیم.
tutorial/settings.py
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'coreapp', # New App
'clientapp', # New App
]