django static file not loading

40,673

Solution 1

The URL to the static-Files is "yourDomain/static/"

When you want to access to your "style.css" you should use "/static/style.css" instead of "/polls/style.css"

EDIT:

Change this part of your settings.py

STATICFILES_DIRS = (
    '/polls/static/'
    )

to

STATICFILES_DIRS = (
    'C:/django poll project/mysite/static'
    )

better would be:

STATICFILES_DIRS = (
    os.path.join(SITE_ROOT, '..', 'static'),
)

Then the folder is called "static" and is on the same level where the "manage.py" is. When you put your style.css in this "static"-folder you can call it with "/static/style.css"

Solution 2

Updated Answer For Django 2.2 - 2019

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

BASE_DIR is already defined in settings.py

Also when loading, do {% load static %} instead of {% load staticfiles %}

Solution 3

It worked for me :

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, '..', 'static'),
)

Solution 4

Following the documentation: https://docs.djangoproject.com/en/3.2/howto/static-files/

And restarting the server worked for me

Solution 5

If problem bad variable {{STATIC_URL}} in template files, in settings.py add:

django.template.context_processors.static

here:

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

]

Share:
40,673
SSR.P.S.das
Author by

SSR.P.S.das

PYTHON DEVELOPER

Updated on July 11, 2022

Comments

  • SSR.P.S.das
    SSR.P.S.das almost 2 years

    I have problem that i done every thing as described in tutorial https://docs.djangoproject.com/en/1.5/intro/tutorial06/ and every thing also running fine but css,images are not showing their effects. Being a new one on django, Suggestions required. thanks for any help.

    My css file:-

    li a {
        color: red;
    }
    body {
        background: white url("images/background.gif") no-repeat right bottom;
    }
    

    url.py file:-

    from django.conf import settings
    from django.conf.urls.static import static
    from django.conf.urls import patterns,url
    from polls import views
    urlpatterns = patterns('',
        url(r'^$', views.IndexView.as_view(), name='index'),
        url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
        url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), name='results'),
        url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'), 
    ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    Index.html file -

    {% load staticfiles %}
    <link rel="stylesheet" type="text/css" href="{% static '/polls/style.css' %}"/>
    {% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
        <li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li>
    {% endfor %}
    </ul>
    {% else %}
    <p>No polls are available.</p>
    {% endif %}
    

    Settings.py file:-

    MEDIA_ROOT = ''
    MEDIA_URL = ''
    STATIC_ROOT = ''
    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        '/polls/static/'
        )
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    )
    
    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )
    
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
    )
    
    ROOT_URLCONF = 'mysite.urls'
    
    WSGI_APPLICATION = 'mysite.wsgi.application'
    
    TEMPLATE_DIRS = (
        'C:/django poll project/mysite/templates',
        )
    
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django.contrib.admin',
        'polls',
    )
    

    On runserver, getting-

    [18/Sep/2014 17:40:51] "GET /polls/ HTTP/1.1" 200 311 [18/Sep/2014 18:25:39] "GET /polls/ HTTP/1.1" 200 311

  • SSR.P.S.das
    SSR.P.S.das over 9 years
    Doesn't reflect any changes
  • Mujeeb Ishaque
    Mujeeb Ishaque almost 5 years
    NOTICE: it's a tuple. Don't forget the comma at the end.
  • Mujeeb Ishaque
    Mujeeb Ishaque over 4 years
    NOTICE: It can also be a list. like ``` STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] ```