Django TemplateSyntaxError - 'staticfiles' is not a registered tag library

PythonDjangoDjango TemplatesDjango 3.0

Python Problem Overview


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="{% static 'my_image.html' %}">

Python Solutions


Solution 1 - Python

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.

Solution 2 - Python

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

Solution 3 - Python

  • 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')

Solution 4 - Python

This worked for me using django 3.1.4.

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

Solution 5 - Python

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

Solution 6 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAlasdairView Question on Stackoverflow
Solution 1 - PythonAlasdairView Answer on Stackoverflow
Solution 2 - PythonBackdoorTechView Answer on Stackoverflow
Solution 3 - Pythonngandhi_369View Answer on Stackoverflow
Solution 4 - PythonOlowu AbayomiView Answer on Stackoverflow
Solution 5 - PythonMoShamroukhView Answer on Stackoverflow
Solution 6 - PythonDonkeyKongView Answer on Stackoverflow