TemplateDoesNotExist at / base.html

friends. I am trying to repeat by following an example project in a book: "Exploring Django Web Development" by Jaiswal, Sanjeev.

Starting a server I get this exception: TemplateDoesNoesExist in /base.html

TemplateDoesNotExist at / base.html Request Method: GET Request URL: http://127.0.0.1:8000/ Django Version: 1.8.3 Exception Type: TemplateDoesNotExist Exception Value: base.html Exception Location: C:\Python34\lib\site-packages\django\template\loader.py in get_template, line 46 Python Executable: C:\Python34\python.EXE Python Version: 3.4.3 Python Path: ['C:\\dj\\mytweets', 'C:\\WINDOWS\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages'] Server time: Tue, 14 Jul 2015 14:01:27 +0300 

Postmaster Loader Template

 Django tried loading these templates, in this order: Using loader django.template.loaders.filesystem.Loader: Using loader django.template.loaders.app_directories.Loader: C:\Python34\lib\site-packages\django\contrib\admin\templates\base.html (File does not exist) C:\Python34\lib\site-packages\django\contrib\auth\templates\base.html (File does not exist) 

My settings.py file:

 import os SETTINGS_PATH = os.path.dirname(__file__) PROJECT_PATH = os.path.join(SETTINGS_PATH, os.pardir) PROJECT_PATH = os.path.abspath(PROJECT_PATH) TEMPLATE_PATH = os.path.join(PROJECT_PATH, "templates") SECRET_KEY = 'khcr3h6u+ghi+rtb+g_(mvgq!mtn9u4&%=hu20vt2*u(p8-kde' DEBUG = True TEMPLATE_DEBUG = True ALLOWED_HOSTS = [] INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'tweets', ) MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', ) ROOT_URLCONF = 'mytweets.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(PROJECT_PATH, 'templates')], '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', ], }, }, ] WSGI_APPLICATION = 'mytweets.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(PROJECT_PATH, 'db.sqlite3'), } } LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join( os.path.dirname(__file__), 'static', ), ) TEMPLATE_DIRS = ( TEMPLATE_PATH, ) TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ) 

I also tried changing settings.py like this:

changed settings.py:

 import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATE_PATH = os.path.join(BASE_DIR, "templates") SECRET_KEY = 'khcr3h6u+ghi+rtb+g_(mvgq!mtn9u4&%=hu20vt2*u(p8-kde' DEBUG = True TEMPLATE_DEBUG = True ALLOWED_HOSTS = [] INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'tweets', ) MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', ) ROOT_URLCONF = 'mytweets.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], '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', ], }, }, ] WSGI_APPLICATION = 'mytweets.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join( os.path.dirname(__file__), 'static', ), ) 

My project structure:

My project structure:

views.py:

 from django.views.generic import View from django.shortcuts import render class Index(View): def get(self, request): params = {} params['name'] = 'Django' return render(request, 'base.html', params) 

urls.py:

 from django.conf.urls import patterns, include, url from django.contrib import admin from tweets.views import Index admin.autodiscover() urlpatterns = patterns('', url(r'^$', Index.as_view()), url(r'^admin/', include(admin.site.urls)), ) 

Traceback:

 Template Loader Error: Django tried loading these templates, in this order: Using loader django.template.loaders.filesystem.Loader: Using loader django.template.loaders.app_directories.Loader: C:\Python34\lib\site-packages\django\contrib\admin\templates\base.html (File does not exist) C:\Python34\lib\site-packages\django\contrib\auth\templates\base.html (File does not exist) Traceback: File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response 132.response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Python34\lib\site-packages\django\views\generic\base.py" in view 71.return self.dispatch(request, *args, **kwargs) File "C:\Python34\lib\site-packages\django\views\generic\base.py" in dispatch 89.return handler(request, *args, **kwargs) File "C:\dj\mytweets\tweets\views.py" in get 9.return render(request, 'base.html', params) File "C:\Python34\lib\site-packages\django\shortcuts.py" in render 67.template_name, context, request=request, using=using) File "C:\Python34\lib\site-packages\django\template\loader.py" in render_to_string 98.template = get_template(template_name, using=using) File "C:\Python34\lib\site-packages\django\template\loader.py" in get_template 46.raise TemplateDoesNotExist(template_name) Exception Type: TemplateDoesNotExist at / Exception Value: base.html 

Please give advice, what should I change to get the page displayed?

+10
python django
source share
2 answers

I am not familiar with the book you are using, so I cannot give you any advice based on this. If the book is for Django 1.7, it will be easier to use Django 1.7 instead of Django 1.8, at least when you start with Django.

If you want to stick with Django 1.8, here's how to fix the error you are currently seeing:

Your settings.py file has a mixture of old template settings such as TEMPLATE_DIRS and TEMPLATE_LOADERS (Django <= 1.7), and new settings in the TEMPLATES section (Django 1.8+).

First delete the old settings TEMPLATE_DIRS and TEMPLATE_LOADERS .

Secondly, it seems that DIRS is incorrect in setting TEMPLATES .

Define BASE_DIR , which should be included in default settings.py at startup ./manage.py startproject

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

Then change the TEMPLATES to

 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... 
+8
source share

Set the path to the template in DIR [] from settings.py

  TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [**'C:\\Python27\\Lib\\site-packages\\django\\contrib\\admin\\templates\\admin'**], 'APP_DIRS':True, 'OPTIONS': { 
-3
source share

All Articles