Django isn't serving static files, getting 404 errors
css, django, python, url-routing
Solution
Have you defined your static files directory in `settings.py` ?
I'm guessing you have `'django.contrib.staticfiles',` in your installed apps.
If you haven't defined your static files dir, you could by doing something like this:
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
Problem
I can't seem to get my static files to load from my templates. I've followed the official documentation but I must be missing something. My directory layout (generated by Django, most files omitted): ``` myproject myproject settings.py urls.py static css bootstrap.css main.css templates base.html myapp1 myapp2 ... manage.py ``` My `settings.py`: ``` STATIC_URL = 'static/' ``` I'm referencing my stylesheets like so (from my templates): ``` {% load staticfiles %} <link rel="stylesheet" href="{% static "css/bootstrap.css" %}" type="text/css"> <link rel="stylesheet" href="{% static "css/style.css" %}" type="text/css"> ``` Which gives this once rendered (in HTML): ``` <link rel="stylesheet" href="static/css/bootstrap.css" type="text/css"> <link rel="stylesheet" href="static/css/style.css" type="text/css"> ``` Yet these links don't actually lead anywhere (when I visit them I get 404 error from Django). I feel that I could fix this by adding something in `urls.py`, but I thought Django did this automatically when you run the server? What am I missing?