2016-03-17 6 views
2

Я пытаюсь создать свой собственный проект с Django версии 1.9.x, но я не могу сделать индексную страницу на / для работы.TemplateDoesNotExist at/blog/index.html

Это моя структура папок:

rxe/ 
    urls.py 
    wsgi.py 
    settings.py 
blog/ 
    migrations/ 
    static/ 
     blog/ 
      css/ 
      js/ 
      img/ 
    templates/ 
     blog/ 
      index.html 
    admin.py 
    models.py 
    tests.py 
    urls.py 
    views.py 
manage.py 

rxe/urls.py:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'$', include('blog.urls')), 
] 

blog/urls.py:

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    url(r'^$', views.IndexView.as_view(), name = 'index'), 
] 

blog/views.py:

from django.http import HttpResponse, HttpResponseRedirect 
from django.views.generic import TemplateView 

class IndexView(TemplateView): 
    template_name = 'blog/index.html' 

При доступе к localhost:8000/, ошибка:

TemplateDoesNotExist at /

blog/index.html

И прямо под ним, в Template-погрузчик посмертных:

django.template.loaders.app_directories.Loader: /usr/local/lib/python2.7/dist-packages/Django-1.9.4-py2.7.egg/django/contrib/admin/templates/blog/index.html (Source does not exist)

django.template.loaders.app_directories.Loader: /usr/local/lib/python2.7/dist-packages/Django-1.9.4-py2.7.egg/django/contrib/auth/templates/blog/index.html (Source does not exist)

Это работает, если я вернусь к HttpResponse('Hello'), как в учебнике , но этот же учебник не имеет никакого представления для пути /, и я хочу его там.

Редактировать

rxe/settings.py, как он был создан:

TEMPLATES = [ 
    { 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [], 
    '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', 
     ], 
    }, 
    }, 
] 
+0

Можете ли вы добавить настройки своего шаблона? –

+0

Я не пробовал подкаталог в папке шаблонов приложений ... Вы пробовали переместить index.html только в папку шаблона и изменить свою ссылку только на индекс –

+0

@RodXavier 'settings.py' файл? – mfgabriel92

ответ

5

Вы должны добавить blog приложение к вашему проекту, включив его в настройках INSTALLED_APPS:

INSTALLED_APPS = [..., 
        'blog'] 

В противном случае загрузчик шаблонов не будет обрабатывать каталог blog si Это не рассматривается как приложение.

+0

Да, вот и все. – mfgabriel92

+0

Я нахожу это странным ... почему django не выдает ошибку в импорте URL (или, по крайней мере, предупреждение), что url-файл включает в себя из подкаталога/приложения, которое не является частью установленных приложений. Я знаю, почему python этого не делает, но, возможно, мы должны попросить, чтобы django делал чек здесь, так как я видел, что эта «ошибка», отсутствующая в INSTALLED_APPS, вызывает массу проблем для людей. –

+0

Он не может знать об этом.Вы только намекаете на каталоги _after_ 'templates' directory; который может быть любым из каталогов шаблонов. Настоящий намек - это посмертное сообщение, которое ничего не говорит о приложении для блога. – Selcuk