Path Settings Change in Django 3.1

Affects: Mastering Django 3 (original 2020 version) and Build a Website with Django 3 (2019 version)

From Django 3.1, the Django file replaces the os module from Python with pathlib.


import os

Is now:

from pathlib import Path

For existing projects, this will not affect the operation of your code. If you start a new project with Django 3.1+, however, the code in these books will break on the DIRS and STATICFILES_DIRS settings.

You have two options to resolve this problem. The simplest is to add import os to your Django 3.1+ settings file.

The second option is to change your settings to use pathlib. This is the best option, as Django will use pathlib from 3.1 onwards, so you might as well get used to the change.

You need to make two changes.


'DIRS': [os.path.join(BASE_DIR, 'myclub_site/templates')],

in your TEMPLATES setting to:

'DIRS': [BASE_DIR / 'myclub_site/templates'],

And change:

    os.path.join(BASE_DIR, 'myclub_site/static'),


STATICFILES_DIRS = [BASE_DIR / 'myclub_site/static')]
Scroll to Top