user1460819
user1460819

Reputation: 2112

Static files are not loaded in Django

I'm trying to follow these instructions to enable static files in my Django project. I have

STATIC_URL = '/static/'

in my settings.py file. I have 'django.contrib.staticfiles', added to the INSTALLED_APPS = (...) part I created a folder mysite/static/mysite and put my files there. But after I run the server, I cannot access my files at http://127.0.0.1:8000/static/mysite/style.css. What I have done wrong?

Upvotes: 1

Views: 273

Answers (2)

Adam Stone
Adam Stone

Reputation: 2006

I can suggest a couple things to check:

  • In my projects at least, the static folder is in the app directory, not the project directory. For example, mysite/myapp/static/myapp/img.jpg rather than mysite/static/mysite/img.jpg. Your project might not be looking in the right place.

  • Make sure that {% load staticfiles %} is in your html template before linking the files.

  • When you link a file in your html template, rather than direct urls like

<link rel="stylesheet" href="myapp/css/custom.css">

use

<link rel="stylesheet" href="{% static 'myapp/css/custom.css' %}">

This was enough to get static files working in my projects, without having to modify urls.py or manually set PROJECT_ROOT or STATICFILES_DIRS.

Upvotes: 0

Paulo Bu
Paulo Bu

Reputation: 29804

In settings.py include this:

import os
settings_dir = os.path.dirname(__file__)
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir))

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static/mysite/'),
)

And in your urls.py include these lines at the end:

from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

Hope it helps.

Upvotes: 1

Related Questions