After upgrading to Django 3.0, I get the following TemplateSyntaxError:

In template /Users/alasdair//myproject/myapp/templates/index.html, error at line 1
'staticfiles' is not a registered tag library. Must be one of: admin_list admin_modify admin_urls cache i18n l10n log static tz

Here is my template

{% load staticfiles %}
<img src="https://stackoverflow.com/questions/55929472/{% static"my_image.html' %}">

If you have any of the following tags in your template:

{% load staticfiles %}
{% load static from staticfiles %}
{% load admin_static %}

Then replace it with:

{% load static %}

You have to make this change because {% load staticfiles %} and {% load admin_static %} were deprecated in Django 2.1, and removed in Django 3.0.

Register staticfiles to tag library

staticfiles has been change to static

You can register with the fallowing code in your settings.py

Add this code in your TEMPLATES settings:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'libraries' : {
                'staticfiles': 'django.templatetags.static', 
            }
        },
    },
]

Note the you can find libraries witch you don’t have it

  • Try {% load static %} instead of {% load staticfiles %}
  • If effect of CSS or any other files doesn’t reflect in your template then also write following lines in the end of your settings.py file
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
VENV_PATH = os.path.dirname(BASE_DIR)
STATIC_ROOT = os.path.join(VENV_PATH, 'static_root')

This worked for me using django 3.1.4.

{% load static %}
<link rel"stylesheet" href = "{% static 'style.css' %}">

this worked with me replace {% load static from staticfiles %} with {% load static %}

where :

go to your virtual environment “venv” /lip/python3.X/site-packages/leaflet/templates/leaflet/admin/widget.html and all of the .HTML files in the directory

My issue was in step 4 from documentation here: https://docs.djangoproject.com/en/3.2/howto/static-files/

“4. Store your static files in a folder called static in your app. For example my_app/static/my_app/example.jpg.”

Once I had corrected my directory structure to match everything worked.