Static files in Django refer to files like CSS, JavaScript, images, and fonts that are served to the client as-is. Django provides a powerful framework for managing and serving these files during both development and production.
How Static Files Work in Django
1. Static Files in Development:
Django’s built-in development server automatically serves static files without requiring additional configuration.
Files are located in the STATICFILES_DIRS directory or app-specific static/ directories.
2. Static Files in Production:
Static files are collected into a single directory using the collectstatic command.
python manage.py collectstatic
These files are served by a web server like Nginx or Apache.
How to Configure Static Files?
1. Directory Structure
The typical structure for static files in a Django project:
myproject/
├── myapp/
│ ├── static/
│ │ └── myapp/
│ │ ├── css/
│ │ │ └── styles.css
│ │ ├── js/
│ │ │ └── script.js
│ │ └── images/
│ │ └── logo.png
├── static/
│ └── global/
│ └── css/
│ └── global_styles.css
├── settings.py
2. Settings
In your settings.py, configure the static files:
# settings.py
# URL for accessing static files
STATIC_URL = '/static/'
# Directories for collecting static files (development)
STATICFILES_DIRS = [
BASE_DIR / "static", # Your global static files
]
# Directory where collected static files are stored (production)
STATIC_ROOT = BASE_DIR / "staticfiles"
Adding Static Files to Templates
To use static files in templates, load the static template tag and reference the files.
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'global/css/global_styles.css' %}">
<title>Static Files Example</title>
</head>
<body>
<h1>Welcome to Django Static Files</h1>
<img src="{% static 'myapp/images/logo.png' %}" alt="Logo">
<script src="{% static 'myapp/js/script.js' %}"></script>
</body>
</html>
Django Static Files Handling – Objective Questions (MCQs)
Q1. Static files in Django include:
Q2. Static files are placed in which folder by default?
Q3. Which setting must be configured for Django static files?
Q4. Which command collects all static files into one directory for deployment?
Q5. Static files are loaded in templates using: