2016-01-02 7 views
2

Моей Джанго структуры:Джанго TemplateView поиск в неправильном месте

testing 
    contacts 
     __init__.py 
     templates 
      contacts 
       index.html 
     (additional modules) 
    testing 
     __init__.py 
     templates 
      testing 
       test.html 
     urls.py 
     (additional modules) 

Внутри основного модуля URL, testing.urls, у меня есть URLconf, который следующим образом:

url(r'^testing/$', TemplateView.as_view(template_name='testing/test.html')) 

проблема в том, что он продолжает искать в contacts.templates.contacts для файла test.html. При существующем urlcon, страница отладки говорит следующее:

Template-погрузчик посмертного

Django tried loading these templates, in this order: 
Using loader django.template.loaders.filesystem.Loader: 
Using loader django.template.loaders.app_directories.Loader: 
/Library/Python/2.7/site-packages/django/contrib/admin/templates/testing/test.html (File does not exist) 
/Library/Python/2.7/site-packages/django/contrib/auth/templates/testing/test.html (File does not exist) 
/Users/*/Developer/django/testing/contacts/templates/testing/test.html (File does not exist) 

всегда по умолчанию к .................. ........ ^^^^^^^^^^ contacts папка почему-то. Есть ли другие параметры для TemplateView или template_name, которые могут это контролировать? Любая помощь ценится!


Update - Внутри 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

Как вы определяете шаблоны dirs в settings.py? – Mirac7

+0

@ Mirac7 обновленный вопрос с разделом 'settings.py' – inthenameofmusik

ответ

4

Каталог testing/testing не в настоящее время ведется поиск Джанго. Наиболее простое решение, чтобы добавить его к установке DIRS:

'DIRS': [os.path.join(BASE_DIR, 'testing', 'templates')], 

Другим вариантом было бы добавить testing к вашей установке INSTALLED_APPS. Тогда Django найдет ваш шаблон, так как у вас есть APP_DIRS=True. Однако я бы не рекомендовал этого, потому что в вашем случае testing/testing - это специальный каталог, содержащий settings.py и корневую конфигурацию url.

+0

Благодарим вас за ответ и дополнительную рекомендацию против установки' testing' app в 'INSTALLED_APPS'. Вы рекомендуете хранить приложение «root» ('testing') оттуда, потому что его следует использовать только как тип маршрутизатора для правильного приложения? – inthenameofmusik

+1

Каталог, содержащий 'settings.py' и корневой URL-адрес, обычно не включается в' INSTALLED_APPS'. Как вы говорите, корневой URL-адрес обычно включает URL-адреса других приложений. Я видел, как некоторые люди включали его в «INSTALLED_APPS» раньше, поэтому я не говорю, что вы абсолютно не должны этого делать. – Alasdair

3

Указывая "APP_DIRS": True, вы сообщаете django о поиске файлов шаблонов внутри каждого установленного приложения. Зайдите в settings.py, все ли ваши приложения содержатся в пределах INSTALLED_APPS. Если они есть, вы можете попытаться заставить django искать шаблоны в вашем приложении.

TEMPLATES = [ 
    { 
     'DIRS': [os.path.join(BASE_DIR, 'testing', 'templates')], 
     .... 
    }, 
] 
Смежные вопросы