Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Template Does not exist

Tags:

django

I am new to Django. I use pydev eclipse as an IDE. First I created a project then an application welcome on that project. I made a folder named Templates within the project and make a file "home.html" and home.html contains

<div>
This is my first site
</div> 

I modify the settings.py file as

TEMPLATE_DIRS = ("Templates")

INSTALLED_APPS = (
    ..........#all default items
    'welcome', #the added one
)

views.py includes

from django.shortcuts import render_to_response
def home(request):
    return render_to_response('home.html')

urls.py contains

from django.conf.urls import patterns, include, url
from welcome.views import home
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'MajorProject.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^home/$', home),

)

then I run it as django project and open my browser and see on localhost:8000/home it shows error

TemplateDoesNotExist at /home/
home.html
Request Method: GET
Request URL:    http://localhost:8000/home/
Django Version: 1.6
Exception Type: TemplateDoesNotExist
Exception Value:    
home.html
Exception Location: C:\Python27\django\template\loader.py in find_template, line 131
Python Executable:  C:\Python27\python.exe
Python Version: 2.7.2
Python Path:    
['D:\\Bishnu\\BE\\4th year\\8th semester\\Major Project II\\Working\\Workspace\\MajorProject',
 'C:\\Python27\\lib\\site-packages\\distribute-0.6.35-py2.7.egg',
 'D:\\Bishnu\\BE\\4th year\\8th semester\\Major Project II\\Working\\Workspace\\MajorProject',
 'C:\\Python27\\DLLs',
 'C:\\Python27\\lib',
 'C:\\Python27\\lib\\plat-win',
 'C:\\Python27\\lib\\lib-tk',
 'C:\\Python27',
 'C:\\Python27\\lib\\site-packages',
 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode',
 'C:\\Windows\\SYSTEM32\\python27.zip']
Server time:    Sun, 2 Jun 2013 14:25:52 +0545
like image 484
Bishnu Bhattarai Avatar asked Jun 01 '13 08:06

Bishnu Bhattarai


4 Answers

Try to set Templates Directory on setting.py.
as

TEMPLATE_DIRS = (
                    os.path.join(os.path.dirname(__file__),'templates'),
)
like image 155
nKandel Avatar answered Oct 24 '22 06:10

nKandel


If you're using Django 1.8+

You'll get this warning:

(1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your default TEMPLATES dict: TEMPLATE_DIRS, TEMPLATE_DEBUG.

Add your template directory to the Base TEMPLATES setting under the DIRS dictionary

Like so:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            root("templates"), #### Here ####
        ],
        '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',
            ],
        },
    },
]
like image 42
Tim Reilly Avatar answered Oct 24 '22 06:10

Tim Reilly


in Django 1.9

in settings.py
TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [BASE_DIR+r'\templates'],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            ...
        ],
    },
},
]
like image 2
Amitkumar Karnik Avatar answered Oct 24 '22 05:10

Amitkumar Karnik


Directory with templates should be named templates, not Templates (even though on windows it may be the same). Also make sure, you have application in PYTHONPATH or the correct directory structure of your project and application like:

project/
    project/
        settings.py
        ...
    welcome/
        templates/
            home.html
        views.py
        ...
  manage.py

Then you don't need to change TEMPLATE_DIRS because app_directories.Loader (enabled by default) will find the templates in your application.

Also of if you still want to change TEMPLATE_DIRS, use absolute paths, but preferred way is the app_directories.Loader.

like image 1
Tomáš Diviš Avatar answered Oct 24 '22 07:10

Tomáš Diviš