Django project base template
Sure you can. A quick example of a base.html
<!DOCTYPE html>
<html>
<head>
<title>My Project</title>
</head>
<body>
{% block content %}{% endblock content %}
</body>
</html>
And say you have a app called myapp with a view.html page,
{% extends "base.html" %}
{% block content %}
<h2>Content for My App</h2>
<p>Stuff etc etc.</p>
{% endblock content %}
Take some time to read the docs for more information
For Django version 3
Some of the answers here are correct, but they do not tell you where to place the files in the directory structure. So I am going to explain the answer a bit.
Yes, you can use {% extends "base.html" %}
to extend the base.html
file from your project directory.
Important thing to note is where to place the base.html
file.
- open
project_name/project_name/settings.py
and find theTEMPLATES
array
and update the'DIRS' : []
to'DIRS': [os.path.join(BASE_DIR, 'templates')]
- Create a directory at root level named
templates
. The location of this folder will beproject_name/templates
- Place all templates here in
projects_name/templates
that you want to access from all the apps.
File:project_name/templates/base.html
Extend this base file from any application-specific template, that might be located at
project_name/app_name/templates/app_name/template_file.html
by using{% extends "base.html" %}
.{% extends "base.html" %} {% block content %} <h2>Content for My App</h2> <p>Stuff etc etc.</p> {% endblock content %}
Additionally, you can also create project-wide static
directory at the same level as template directory by updating STATICFILES_DIRS
to STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
in project_name/project_name/settings.py
.
Final Directory Structure looks like -
project_name/
app_name/
templates/
app_name/
template_file.html
project_name/
settings.py
templates/
base.html
static/
css/
js/
img/