[Fixed]-Django isn't serving static files, getting 404 errors


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__))

    os.path.join(PROJECT_ROOT, 'static'),


This is the working solution for static/media/template access in django for windows,


import os.path


STATIC_URL = '/static/'



My problem was solved by adding “STATICFILES_DIRS” in settings.py file

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


Check if STATICFILES_FINDERS is defined in your settings.py


The default value of STATICFILES_FINDERS is good enough but you have 2 choices :

  • you need to have the static file inside an app and having this app in your INSTALLED_APPS

  • or you need to define STATICFILES_DIRS with your path to the static files if expect the behavior being the one of django.contrib.staticfiles.finders.FileSystemFinder



I thought Django did this automatically when you run the server?

Why did you think that? If you’ve followed the official documentation, you won’t have found that. Read what you have to do to serve them in development here.

There’s another problem. Your STATIC_URL is a relative link, so browsers add it to the existing page URL. So if you’re on page /foo, 'static/css/style.css' evaluates to /foo/static/css/style.css'.

Make sure it either starts with / – ie /static/ – or is a full URL, ie http://myserver.com/static/.


I encountered this problem too. And I solved the problem by revising the href like this:

<link rel="stylesheet" href="{{STATIC_URL}}css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css"> 


Make sure that you have the static folder set up in the right place, that is if it is in the app folder, then you can get further clarification from this helpful resource1.


My solution was DEBUG = True in settings.


Leave a comment