# Django static files not working
In this article, you will learn how to fix the problem of not loading static files. This is the easiest and safest solution.
In the new version of Django 3.1 and above the settings.py file uses PATH instead of OS to deal with the directory structure. So all the code, we wrote for our static dirs and things like that will no longer work unless we import os at the top of our settings.py file..
Note : This article related to DEBUG = True , if you have problems with DEBUG = False then you can follow this article; Static files not working when DEGUB= False. Have fun!
Let's follow a few steps and, solve the problem of not loading Django static files:
Step 1 : Check that "BASE_DIR" is defined in your project settings.py , if not then define it
➤ Code: settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Step 2 : check debug mode in settings.py.
➤ Code: settings.py
STATIC_URL = True
ALLOWED_HOSTS = []
Step 3 : Define a STATIC_URL and STATICFILES_DIRS in settings.py.
➤ Code: settings.py
For recent releases of Django, You have to configure static files in settings.py as,
STATIC_URL = '/static/' # the path in url
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
Step 4 : In your templates, For access to static files. use the static template tag to build the URL for the given relative path
Store your static files in a folder called static in your app For example my_app/static/image/example.jpg.
➤ Code: home.html
After that, create the static folder at the root directory of your project.
To load the static files on templates use:
{% load static %}
<!DOCTYPE html>
<html>
<head>
<title>Welcome! to coderwebsite</title>
<link rel= "stylesheet"href= "{% static 'css/coderwebsite.css' %}" type= "text/css">
<script type= "text/javascript"href= "{% static 'js/coderwebsite.js' %}"></script>
</head>
<body>
<h1>My Django project</h1>
<img height="50" width="100" src="{%static 'images/coderwebsite.png' %}" alt="logo"/>
</body>
</html>
Step 3 : Now finally, you can run your django project.
python manage.py runserver
Note : Congratulations, now static files will be loaded in your Django project!
Comments
Here is my site. Kindly check