user1940321
user1940321

Reputation:

Django Template Error :TemplateDoesNotExist at / homepage/index.html

I'm attempting to get the Django development server to load a template with the following settings but it's throwing the error

TemplateDoesNotExist at /

homepage/index.html

Below are the files that I've edited to try to get this to work

blog/blog/settings.py - (Cut the portion pertaining to this question)

import os

TEMPLATE_DIRS = (
os.path.join( os.path.dirname(__file__), 'templates' ),
)

blog/apps/homepage/views.py

from django.shortcuts import render_to_response

def index(request):
    return render_to_response('homepage/index.html')

Any thoughts about how to fix this?

Upvotes: 1

Views: 4738

Answers (3)

user28864
user28864

Reputation: 3453

in django 1.10, navigate to path/to/settings.py in your parent project directory, look for:

TEMPLATES = [.....] and specify the path/to/project_directory in the DIR: option

for example (in my own case):

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        '/xampp/htdocs/advisory_portal'
    ],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
]

Upvotes: 0

Daniel Eriksson
Daniel Eriksson

Reputation: 3864

By default Django uses two template loaders to locate templates:

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

First the filesystem loader checks all dirs in TEMPLATE_DIRS to see if it can find the named template. If that fails the app_directories loader will look in the /templates/ dir in the current app for the named template. This way you can ship default templates with reusable apps that can easily be overridden.

In your case Django will look for the template here:

blog/blog/templates/homepage/index.html
blog/apps/homepage/templates/homepage/index.html

Upvotes: 2

user1724345
user1724345

Reputation:

You give a wrong direction to your TEMPLATE_DIRS. The settings.py file is in package blog in project blog, but your templates folder is in blog project, not in blog package. You must give the absolute directory of your project and join templates with it.

Upvotes: 1

Related Questions