Invalid block tag: 'static'

60,045

Solution 1

Make sure that 'django.contrib.staticfiles' is included in your INSTALLED_APPS.

Solution 2

This worked for me

{% load staticfiles %}

Solution 3

include

{% load static %}

just above tag in your html file, it will make HTML file to load static files like css, js, images etc

Solution 4

add {% load static %} at the top of html file, under the DOCTYPE html line

Solution 5

07 Sept, 2020 i also faced the same problem on Django 3.2.2 and this worked for me.

{% load static %}
Share:
60,045
Yan Yang
Author by

Yan Yang

Software Development Engineer Interested in Machine Learning and Cognitive Science research.

Updated on January 03, 2022

Comments

  • Yan Yang
    Yan Yang over 2 years

    Server returned TemplateSyntaxError at / Invalid block tag: 'static' on this line: <img src="{% static 'icon/logo.png' %}">.

    The whold html file is like this (it's an html file {% include %}ed by another one):

    {% load staticfiles %}
    <div class="header">
        <nav>
          <ul class="nav nav-pills pull-right">
            <li role="presentation"><a href="{% url 'offer rank' %}">潮品榜</a></li>
            <li role="presentation"><a href="{% url 'user rank' %}">达人榜</a></li>
            <li role="presentation"><a href="#" data-toggle="modal" data-target="#start">登陆</a></li>
            <li role="presentation"><a href="#" data-toggle="modal" data-target="#start">注册</a></li>
            {% if debug_users %}
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">切换用户<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                {% for debug_user in debug_users %}
                <li><a href="{% url 'debug login' debug_user.id %}">{% if debug_user.kbjuser.user_type == '1' %}达人{% else %}商家{% endif %}: {{ debug_user.username }}</a></li>
                {% endfor %}
              </ul>
            </li>
            {% endif %}
          </ul>
        </nav>
         <h3><img src="{% static 'icon/logo.png' %}">
            <a href="{% url 'home' %}" class="text-muted">口碑街</a>
        </h3>
    </div>
    

    And settings.py is like this:

    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.7/howto/static-files/
    
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
    
    
    from hw.settings import *
    from useraccess.settings import *
    
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
        # other finders..
        'compressor.finders.CompressorFinder',
    )
    
    COMPRESS_ENABLED = True
    

    I can't figure out what happens here.

    Here are some more lines in settings.py:

    # Application definition
    
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'mptt',
        'hw',
        'useraccess',
        'proxy',
        'compressor',
        'sekizai',
    )
    
    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'useraccess.middleware.VisitCollectMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    
    )
    
    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.contrib.auth.context_processors.auth',
        'django.core.context_processors.i18n',
        'django.core.context_processors.request',
        'django.core.context_processors.media',
        'django.core.context_processors.static',
        'hw.context_processors.user_info',
        'hw.context_processors.login_form',
        'hw.context_processors.get_all_user',
        'sekizai.context_processors.sekizai',
    )
    
    ROOT_URLCONF = 'ddw.urls'
    
    WSGI_APPLICATION = 'ddw.wsgi.application'
    
    LOGIN_URL = '/login/'
    

    My project folder.

  • Yan Yang
    Yan Yang over 9 years
    I have included this one.
  • Yan Yang
    Yan Yang over 9 years
    I think I have all things in the checklist done. You can see the lines I added to the question.
  • Dr. Younes Henni
    Dr. Younes Henni over 6 years
    Now for Django 1.11 the correct ofrmat is: {% load static %}
  • Jon
    Jon over 5 years
    This should be the accepted answer as it relates directly to OP's question
  • Dinith Rukshan Kumara
    Dinith Rukshan Kumara about 3 years
    Page is not found. Please update the answer.