juiceb0xk
juiceb0xk

Reputation: 969

django Cannot find static/css files error 404

This problem seems to be widely known, however, most are old Q&A's and they do not solve my problem.

I am using Django 2.0.2 and when my simple web page is not rendering my bootstrap.css file because it simply cannot find it.

I am following this tutorial: https://simpleisbetterthancomplex.com/series/2017/09/11/a-complete-beginners-guide-to-django-part-2.html#static-files-setup

This is my file structure:

myproject/
 |-- myproject/
 |    |-- boards/
 |    |-- myproject/
 |    |-- templates/
 |    |-- static/
 |    |    +-- css/
 |    |         +-- bootstrap.min.css    <-- here
 |    +-- manage.py

This is my static variables defined in the settings.py file.

STATIC_URL = '/static/'

STATICFILES_DIR = [
    os.path.join(BASE_DIR, 'static'),
]

This is my home.html file as is with the bottom half cut out for brevity.

{% load static %}<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Boards</title>
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
  </head>
  <body>
    <h1>Boards</h1>

I have debugging set to true, and when I run my server and load it up, I am presented with the following: [08/Feb/2018 19:26:02] "GET /static/css/bootstrap.css HTTP/1.1" 404 1675

I am also not able to visit this URL as it states a 404 error too: http://127.0.0.1:8000/static/css/bootstrap.min.css.

I'm not sure as to why Django cannot find the .css file when I have it clearly stated in the above files. No other StackOverflow questions/answers have helped me either.

Open to suggestions; any help is much appreciated.

Upvotes: 14

Views: 18985

Answers (4)

user13181720
user13181720

Reputation: 11

on the setting.py file try using this syntax:

STATICFILES_DIRS = [ os.path.join (BASE_DIR, "static"), '/ Var / www / static /', ]

Upvotes: 1

bonidjukic
bonidjukic

Reputation: 1479

EDIT: It seems that the OP mispelled the STATICFILES_DIRS setting, missing an 'S'.

Within your Django app directory create a subdirectory static and then within that directory, create another one named the same as the name of your Django app. Then move your css directory inside that latest mentioned directory.

So, something like this:

- your_django_app
-- static
--- your_django_app
---- css
----- bootstrap.min.css

Then you'll be able to use in your templates like this:

<link rel="stylesheet" href="{% static 'your_django_app/css/bootstrap.min.css' %}">

Upvotes: 11

juiceb0xk
juiceb0xk

Reputation: 969

As per @bonidjkic's comment: I believe that you misspelled the STATICFILES_DIRS setting (you're missing an 'S'), this was the problem.

Thank you ever so much, I feel so stupid as to how I had ever missed that.

Upvotes: 2

steinarey
steinarey

Reputation: 187

Do you need the "STATICFILES_DIR" variable in your case? It points to the same place so it's redundant until you run it on something like nginx or Apache I would think, to have them server the static files.

Is django.contrib.staticfiles in you "INSTALLED_APPS" variable in your settings file?

Upvotes: 0

Related Questions