2016-01-12 2 views
3

Я пытаюсь отобразить простую страницу, но у меня возникла проблема.Django: TemplateDoesNotExist at /.../

TemplateDoesNotExist at /pages/ 
{} 

Папка с шаблоном не найдена. вот мои конфигурации settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'pages/template')], 
     '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', 
      ], 
     }, 
    }, 
] 

ли я сделал что-то не так?

--------------- CMD ----------------

Internal Server Error: /pages/ 
Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 149, in get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 147, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "C:\Python34\Scripts\src\pages\views.py", line 6, in index 
    return render('index.html', context) 
    File "C:\Python34\lib\site-packages\django\shortcuts.py", line 67, in render 
    template_name, context, request=request, using=using) 
    File "C:\Python34\lib\site-packages\django\template\loader.py", line 96, in render_to_string 
    template = get_template(template_name, using=using) 
    File "C:\Python34\lib\site-packages\django\template\loader.py", line 43, in get_template 
    raise TemplateDoesNotExist(template_name, chain=chain) 
django.template.exceptions.TemplateDoesNotExist: {} 
[12/Jan/2016 20:51:57] "GET /pages/ HTTP/1.1" 500 74646 

----- ------ UPDATE -------------

File Tree

enter image description here

views.py

from django.shortcuts import render 

# Create your views here. 
def index(request): 
    context = {} 
    return render(request, 'index.html', context) 
+0

пожалуйста, напишите вашу структуру каталогов проекта. – Saturnix

+0

@Saturnix Обновлено – Lindow

+0

переместите папку шаблона за пределы «страницы» и назовите это «шаблоны». Поместите в свои настройки: 'TEMPLATE_DIRS = (os.path.join (BASE_DIR, 'templates'),)'. Теперь в вашем view.py вызовите шаблон с помощью 'render ('index.html', context)' – Saturnix

ответ

3

Вы забыли первый аргумент request при вызове render.

return render(request, 'index.html', context) 

У вас может быть несколько каталогов шаблонов, например. src/template и pages/template. Если вы хотите иметь каталог src/template, вам необходимо включить его в свой вариант DIRS`.

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

Вам не нужно в каталоге DIRSpages/templates - шаблоны в этом каталоге можно найти в приложении загрузчика, потому что у вас есть APP_DIRS набор для True и pages в вашей установке INSTALLED_APPS.

+0

Да, видел это на данный момент, но проблема все еще существует: 'TemplateDoesNotExist at/pages/ index.html' – Lindow

+0

Найденный, я не должен был перемещаться папку шаблона вне папки. Еще раз спасибо Аласдейр. – Lindow

+0

Вы можете иметь несколько папок шаблонов, если хотите. См. Мой обновленный ответ. – Alasdair

2

У вас неправильный маршрут для ваших шаблонов. По умолчанию Джанго есть папка «шаблон» для HTML-файлов, попробуйте создать папку с именем шаблона внутри папки приложения, так и внутри них файл index.html

0

Я имел эту ошибку:

TemplateDoesNotExist (TEMPLATE_NAME, цепь = цепь) django.template.exceptions.TemplateDoesNotExist: index.html

, когда я использовал, чтобы сделать виртуальную среду, поскольку он не устанавливать все необходимые инструменты, с помощью PyCharm для шаблонов, которые будут загружены из папки шаблонов ,

Теперь я создаю свой virtualenvironments через командную строку и установил Django и все, что мне нужно, с помощью pip install «something».

Примечание: Я знаю, что это не отвечает на вопрос, но это то, что я сделал неправильно. Я наткнулся на этот вопрос, так что другие могли ошибиться.

1

Возможно, вы забыли добавить свое приложение в настройках Installed_Apps.

INSTALLED_APPS = [

...

'your_app' 

]