Most documentation simply tells you to add the name of each of your apps to the INSTALLED_APPS array in your Django project's settings. What is the benefit/purpose of this? What different functionality will I get if I create 2 apps, but only include the name of one in my INSTALLED_APPS array?
Asked
Active
Viewed 6,407 times
21
-
In addition to what Robert Townley mentioned, I'd like to add that adding your app to INSTALLED_APPS also helps by making your app's templates discoverable. The default DjangoTemplates backend looks for the 'templates' folder only within the apps included in INSTALLED_APPS. – Amos P Nov 01 '21 at 10:46
-
@AmosP You can and should just use `os.path.join(BASE_DIR, 'templates')` as your templates folder so that is not relevant to `INSTALLED_APPS` (see this [question](https://stackoverflow.com/q/3038459/8285811)). Also, this should be a comment on the relevant answer. – Akaisteph7 Aug 16 '23 at 21:43
1 Answers
29
Django uses INSTALLED_APPS
as a list of all of the places to look for models, management commands, tests, and other utilities.
If you made two apps (say myapp
and myuninstalledapp
), but only one was listed in INSTALLED_APPS
, you'd notice the following behavior:
- The models contained in
myuninstalledapp/models.py
would never trigger migration changes (or generate initial migrations). You wouldn't be able to interact with them on the database level either because their tables will have never been created. - Static files listed within
myapp/static/
would be discovered as part of collectstatic or the test server's staticfiles serving, butmyuninstalledapp/static
files wouldn't be. - Tests within
myapp/tests.py
would run butmyuninstalledapp/tests.py
wouldn't. - Management commands listed in
myuninstalledapp/management/commands/
wouldn't be discovered.
So really, you're welcome to have folders within your Django project that aren't installed apps (you can even create them with python manage.py startapp
) but just know that certain auto-discovery Django utilities won't work for that application.

Robert Townley
- 3,414
- 3
- 28
- 54
-
6Additional to point 1: reverse relationships wouldn't be created for models which are pointed to by ForeignKeys from myuninstalledapp. – Daniel Roseman Dec 07 '17 at 07:34