The proper way to register apps in Django

I noticed different ways to register apps in the Django project. For example, if I have an app called Catalog, in settings.py I can use either only the name of the app ‘catalogue’ or the longer name ‘catalogue.apps.CatalogConfig’. What is the difference, and which is the more accurate way to register an app?

The first method (catalogue) is a reference to a directory relative to a directory in Python’s search path. In this case, it’s generally expected to be relative to either your BASE_DIR or your virtualenvs site_packages directory.

The other method involves using an AppConfig class. See Applications | Django documentation | Django for the details.

The difference is that using an AppConfig class lets you define some attributes for your app that aren’t available when you use the defaults created when you identify a directory as an app.
Neither is “more accurate” or necessarily “better” - unless you have a need to do something with those attributes that can only be assigned in that class.

1 Like