Ashutosh
Ashutosh

Reputation: 4675

Django template {% include not working

I'm new to Django. I'm having problem including a sub-template in a main template. The directory structure of my project is attached in the snapshot. I removed the default views.py and created my own folder named "views" and put my views in it. Here is what I've done:

1. app/views/__init__.py

from .home import *

2. app/views/home.py

from django.shortcuts import render

def index(request):
    return render(request, 'home.html')

3. app/templates/home.html

{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>
    Administrator Section
</title>

<link type="text/css" rel="stylesheet" href="{% static "css/common.css" %}"/>
<link type="text/css" rel="stylesheet" href="{% static "css/theme/transdmin.css" %}"/>
<link type="text/css" rel="stylesheet" href="{% static "css/login.css" %}"/>

<script type="text/javascript" src="{% static "js/jquery-1.10.2.js" %}"></script>
<script type="text/javascript" src="{% static "js/common.js" %}"></script>
<script type="text/javascript" src="{% static "js/login.js" %}"></script>

</head>
<body>
<div>

<div id="wrapper" class="ys-adminform">

    {% include "includes.header_logo.html" %}

    <form id="form-login" class="admin-section-form frm">

        <div class="header">
            <br/>

            <h1>Login</h1>
            <br/>
        </div>

        <div class="content">

            <div class="form-row">
                <input name="email" class="input" placeholder="Email" type="text"/>

                <div class="user-icon"></div>
            </div>
            <div class="form-row">
                <input name="password" class="input password" placeholder="Password" type="password"/>

                <div class="pass-icon"></div>
            </div>
        </div>

        <div class="footerlogin">
            <input class="button" name="btn-login" value="Authenticate" type="button"/>

            <div class="message" style="font-weight: bold; padding-top:16px;">&nbsp;</div>
        </div>

    </form>

</div>
</div>

{% include "includes.footer.html" %}
</body>
</html>

The problem is include is not adding content from the sub-views. I understand it could be a path problem but I tried various options like:

{% include "includes.header_logo.html" %}

{% include includes.header_logo.html %}

{% include "includes/header_logo.html" %}

{% include "templates.includes.header_logo.html" %}

{% include "app.templates.includes.header_logo.html" %}

etc.

Snapshot of project structure

Upvotes: 1

Views: 3249

Answers (3)

Ziar Khan
Ziar Khan

Reputation: 321

Simply add template folder with slash .... like {% include "blog/footer.html" %}

Upvotes: 0

Ashutosh
Ashutosh

Reputation: 4675

As suggested by Leistungsabfall, "includes/footer.html" works. The header was not working because it had:

This line must be crashing and because of which header was not working.

Upvotes: 0

Leistungsabfall
Leistungsabfall

Reputation: 6488

You have to use directory slashes (/), not dots (.)

For example:

{% include "includes.footer.html" %}

becomes this:

{% include "includes/footer.html" %} 

Upvotes: 1

Related Questions