ایجاد اپ
منظور از یک 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، در فصل مربوطه نسبت به ایجاد و تعریف آن اقدام خواهیم نمود.