๐Ÿ“ Django

Project vs Application in Django

P
Author
PyLand Team
๐Ÿ“…
Published
30.06.2026
โฑ๏ธ
Reading time
1 min
๐Ÿ‘๏ธ
Views
262
๐ŸŒฑ
Level
Beginner

A Django project contains the site’s shared configuration, while applications split its functionality into focused, reusable components.

The Difference

Project โ€” the entire site configuration: settings.py, the main urls.py, wsgi.py.

Application โ€” a modular component with a specific purpose: models, views, urls, templates.

mysite/              โ† PROJECT
โ”œโ”€โ”€ manage.py
โ”œโ”€โ”€ mysite/
โ”‚   โ”œโ”€โ”€ settings.py
โ”‚   โ””โ”€โ”€ urls.py
โ”œโ”€โ”€ blog/            โ† APPLICATION
โ”‚   โ”œโ”€โ”€ models.py
โ”‚   โ””โ”€โ”€ views.py
โ””โ”€โ”€ shop/            โ† APPLICATION
    โ”œโ”€โ”€ models.py
    โ””โ”€โ”€ views.py

One project can contain many applications. An application can be reused in another project.

Creating an Application

python manage.py startapp tasks

INSTALLED_APPS โ€” Registration

Every application must be listed in INSTALLED_APPS; otherwise Django will not recognize it:

# settings.py
INSTALLED_APPS = [
    # Built-in Django applications
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # Third-party
    'rest_framework',
    'crispy_forms',

    # Your applications
    'tasks',
    'blog',
    'shop',
]

AppConfig โ€” Application Configuration

# tasks/apps.py
from django.apps import AppConfig

class TasksConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'tasks'
    verbose_name = 'Tasks'

You can explicitly reference it in INSTALLED_APPS:

INSTALLED_APPS = [
    'tasks.apps.TasksConfig',  # instead of just 'tasks'
]

When to Extract a Separate Application

  • Users and authentication โ†’ accounts
  • Blog with articles โ†’ blog
  • Cart and orders โ†’ shop
  • API โ†’ api

Rule of thumb: if the functionality can be described with a single noun, it is a candidate for a separate application.

Your reaction to the article

๐Ÿ’ฌ Comments (0)

๐Ÿ” Sign in to leave a comment
๐Ÿšช Login
๐Ÿ’ญ

No comments yet

Be the first to share your opinion about this article!

๐Ÿ”— Similar

Similar articles

Continue learning with these materials

๐Ÿ“

Search in Django

You can start with simple Django ORM filters and move to PostgreSQL features when you...

๐Ÿ“… 30.06.2026 ๐Ÿ‘๏ธ 279
๐Ÿ“

Swagger Documentation with drf-spectacular

drf-spectacular generates an OpenAPI 3.0 schema and Swagger UI for DRF.

๐Ÿ“… 30.06.2026 ๐Ÿ‘๏ธ 561
๐Ÿ“

settings.py: Django Configuration

settings.py is the central configuration file for a Django project.

๐Ÿ“… 30.06.2026 ๐Ÿ‘๏ธ 315
๐ŸŽ“ Continue learning

Courses that cover this material

Visit the course to apply this material in practice.

Django RequestLab: from HTTP to secure production Open course curriculum