پیکربندی پروژه


ایجاد پروژه


 ایجاد پروژه در جنگو، شروع ساخت وب‌سایت خواهد بود. با رفتن به دایرکتوری پروژه (دایرکتوری که در بخش قبل برای آن فضای اختصاصی ایجاد شد) با در نظر داشتن فعال بودن فضای اختصاصی، دستور زیر را اجرا می‌کنیم:

(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 در مرورگر، می‌توان صفحه آغازین پروژه جنگو را ملاحظه نمود:

Django-Tutorial-Launch-Page

ایجاد اپ


منظور از یک 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
]