[Django]-The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting

75๐Ÿ‘

โœ…

According to the docs, collectstatic will copy the files from various folders into STATIC_ROOT.

Therefore, you cannot use the STATIC_ROOT folder in STATICFILES_DIRS.

Solution: change STATIC_ROOT to e.g. STATIC_ROOT = '/home/username/projects/site/assets/'

๐Ÿ‘คSaeX

37๐Ÿ‘

I know it is an old post but this solution has worked for me and might help someone else.

In settings.py:

    if DEBUG:
        STATICFILES_DIRS = [
            os.path.join(BASE_DIR, 'static')
       ]
    else:
        STATIC_ROOT = os.path.join(BASE_DIR, 'static')
๐Ÿ‘คLuis Valverde

28๐Ÿ‘

I faced same error like this (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting. when i try to use compressor

Main problem is My settings.py file

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

Remove or comment :

STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

๐Ÿ‘คMr Singh

4๐Ÿ‘

The solution is that the STATIC_ROOT must not be set if you are running the Django development server:

import sys
if sys.argv[1] != 'runserver':
    STATIC_ROOT = os.path.join(BASE_DIR, "static")

Tested with Django 2.1 in a Windows 10 development environment and in an Ubuntu 18.04 docker container on AWS in a production environment.

๐Ÿ‘คMenno Manheim

0๐Ÿ‘

in settings.py set static root to virtual environment so that it collects the static files to folder static_in_env

STATIC_ROOT=os.path.join(VENV_PATH,'static_in_env/')
๐Ÿ‘คDeepak Chowdary

0๐Ÿ‘

You have to enter complete path of static directory:

STATIC_ROOT = '/home/reza/blog/static/'

Or If you want to use Collects the static files into STATIC_ROOT by django-admin collectstatic command you have to use :

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

0๐Ÿ‘

I had this problem in pythonanywhere, added:

STATIC_URL = '/static/'

STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

STATIC_ROOT = '/home/user/project/'

Then run:

python3.9 manage.py collectstatic

It kind of worked, but sent the files in the main directoryโ€ฆ

๐Ÿ‘คuser5502066

0๐Ÿ‘

For pythonaywhere:

1 โ€“ Add your static root in the setting.py

enter image description here

2 โ€“ Update manually the path environment into web app configuration

enter image description here

๐Ÿ‘คFlorjan

0๐Ÿ‘

I got the same error below:

The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting.

Because I set the same folder static to STATIC_ROOT and STATICFILES_DIRS as shown below:

# "settings.py"

STATIC_ROOT = 'static/'
STATICFILES_DIRS = [
    BASE_DIR / 'static/'
]

So, I set the different folder staticfiles to STATIC_ROOT as shown below, then the error was solved:

# "settings.py"

STATIC_ROOT = 'staticfiles/' # Here
STATICFILES_DIRS = [
    BASE_DIR / 'static/'
]

-3๐Ÿ‘

saw this in Django 1.11 documentation

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Once you make changes to the urls.py as shown above, it should work fine.

๐Ÿ‘คArun Raj

Leave a comment