Django project base template Django project base template django django

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.

  1. open project_name/project_name/settings.py and find the TEMPLATES array
    and update the 'DIRS' : [] to 'DIRS': [os.path.join(BASE_DIR, 'templates')]
  2. Create a directory at root level named templates. The location of this folder will be project_name/templates
  3. Place all templates here in projects_name/templates that you want to access from all the apps.
    File: project_name/templates/base.html
  4. 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 %}