Common Django Project structures

There are an infinite number of ways you could structure a Django project, from the simple to the sublimely complex, and each would mean configuring app names or configuration slightly differently.

The first and most typical version is the flat directory structure. Here the Django project folder is a sibling to each different app you might have:

├── db.sqlite3
├── manage.py
├── project
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── app
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

Then the name in your AppConfig and in INSTALLED_APPS is simply just app like so:

class MyAppConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "app"
INSTALED_APPS = [
  ...
  'app',
]

Personally I find this project fine for when you have one or two apps, but for a more complex I prefer to have some common root directories which I will share tomorrow!