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/
There is some problem in last answer and here is the correct one; you must have Base.html like this:
{% load staticfiles %}<!DOCTYPE html><html><head> <title>My Project</title></head><body>{% block content %}{% endblock %}</body></html>
and also for index.html
{% extends "appname/base.html" %}{% block content %} <h1>test</h1>{% endblock %}