2014-02-12 3 views
0

Я делаю учебник о проекте django. На самом деле это 4.51 утра, и я хочу просто заставить его работать.TemplateDoesNotExist at/polls/index.html

Мой файл urls.py:

from django.conf.urls import patterns, include, url 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^polls/$', 'polls.views.index'), 
) 

Мой views.py файл:

from django.shortcuts import render 

# Create your views here. 
from django.shortcuts import render_to_response 


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

В шаблонах папок я index.html файл. Он показал мне ту же самую TemplateDoesNotExist ошибку, так что я сделал некоторые исследования и I found this question так я добавил к моему settings.py этот код:

import os.path 
SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) 
TEMPLATE_DIRS = (
    os.path.join(SITE_ROOT, 'templates/'), 
) 

Так как заставить его работать ??

Это отслеживающий:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/polls/ 

Django Version: 1.6.1 
Python Version: 3.3.3 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'polls') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 

Template Loader Error: 
Django tried loading these templates, in this order: 
Using loader django.template.loaders.filesystem.Loader: 
C:\Users\JD\PycharmProjects\MyDjangoApp\MyDjangoApp\templates\index.html 

(Файл не существует) Использование загрузчика django.template.loaders.app_directories.Loader: C: \ Python33 \ Lib \ сайт-пакеты \ Джанго \ вно \ Admin \ шаблоны \ index.html (Файл не существует) C: \ Python33 \ Lib \ сайт-пакеты \ Джанго \ вно \ Auth \ шаблоны \ index.html (Файл не существует)

Traceback: 
File "C:\Python33\lib\site-packages\django\core\handlers\base.py" in get_response 
    114.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "C:\Users\JD\PycharmProjects\MyDjangoApp\polls\views.py" in index 
    8.  return render_to_response('index.html') 
File "C:\Python33\lib\site-packages\django\shortcuts\__init__.py" in render_to_response 
    29.  return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) 
File "C:\Python33\lib\site-packages\django\template\loader.py" in render_to_string 
    162.   t = get_template(template_name) 
File "C:\Python33\lib\site-packages\django\template\loader.py" in get_template 
    138.  template, origin = find_template(template_name) 
File "C:\Python33\lib\site-packages\django\template\loader.py" in find_template 
    131.  raise TemplateDoesNotExist(name) 

Exception Type: TemplateDoesNotExist at /polls/ 
Exception Value: index.html 
+0

есть файл, расположенный по адресу: 'C: \ Users \ JD \ PycharmProjects \ MyDjangoApp \ MyDjangoApp \ templates \ index.html'? – dm03514

+0

Нет, есть два MyDjangoApp на пути, но у меня только один раз – user2950593

ответ

2

Изменить

import os.path 
SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) 

в

import os 
SITE_ROOT = os.path.dirname(os.path.dirname(__file__)) 

Если вы посмотрите на TRACEBACK, Python ищет папку шаблона в папку приложения, я полагаю, что это будет та же папка, как настройки .py.

Другой подход заключается в том, чтобы скопировать папку шаблонов в папку MyDjangoAPP.

+0

спасибо))))) Я очень рад))) – user2950593

+0

Я имею в виду, я могу скопировать папку шаблона в папку MyDjangoApp и не писать в settings.py что-то вроде выше? – user2950593

+0

Yup! Это также означает, что каждый раз, когда вы создаете новое приложение, вам нужно создать новую папку шаблонов для этого конкретного приложения и разместить шаблоны приложений в вашей новой папке с шаблонами. Например: \ MyDjangoApp \ app1 \ templates и \ MyDjangoApp \ app2 \ templates – Hevlastka