sayth
sayth

Reputation: 7048

Django can't find template - Polls App Part 3

I am following the polls app tutorial part 3 and I cannot get the templates to be found

This is the exact error

polls/index.html
Request Method: GET
Request URL:    http://localhost:8000/polls/
Django Version: 1.4.3
Exception Type: TemplateDoesNotExist
Exception Value:    
polls/index.html
Exception Location: c:\Python27\lib\site-packages\django\template\loader.py in find_template, line 138
Python Executable:  c:\Python27\python.exe
Python Version: 2.7.2

So in my settings.py I have put the directory there. "C:/Scripts/mysite/template" and created /polls/index.html

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    "C:/Scripts/template"
    "C:/Scripts/mysite/template"
)

It for some reason cannot find it though. Any ideas? This is the exact instruction from the tutorial.

create a directory, somewhere on your filesystem, whose contents Django can access. (Django runs as whatever user your server runs.)

Upvotes: 0

Views: 874

Answers (2)

Daniel Roseman
Daniel Roseman

Reputation: 599778

You're missing a comma at the end of the first line:

"C:/Scripts/template",   # <--- HERE
"C:/Scripts/mysite/template"

without that, Python automatically concatenates the two strings (because they're inside parens) so that it just becomes "C:/Scripts/templateC:/Scripts/mysite/template".

Upvotes: 2

Francis Yaconiello
Francis Yaconiello

Reputation: 10939

Debug

  1. from your applications main folder, run the following command: python manage.py shell this is going to bootstrap your app with the settings file.
  2. type from django.conf import settings and hit enter
  3. type settings.TEMPLATE_DIRS and check the output. Do you see the template directories that you specified?

Absolute paths relative to the settings.py file

I generally use absolute paths relative to the settings.py file. That way collaborators can share a main settings file, and no matter what system/environment you deploy to your paths will be correct.

to do this:

# settings.py
import os

# ... other settings

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

let me know if the debug step didn't help, and i'll try and supply some more help.

Upvotes: 1

Related Questions