2015-07-14 15 views
7

znajomych. Próbuję powtórzyć, wykonując przykład projektu w książce "Learning Django Web Development" Jaiswal, Sanjeev.TemplateDoesNotExist at/base.html

Uruchamianie serwera i uzyskać taki wyjątek: TemplateDoesNotExist na /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 

Template-ładowarka pośmiertna

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) 

Mój plik settings.py:

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 próbowałem również zmienić settings.py w taki sposób:

zmieniony 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', 
    ), 
) 

Moja struktura projektu:

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 

Proszę dać rady, co należy zmienić, aby uzyskać świadczonych stronę?

+0

Czy możesz również udostępnić mytweets/urls.py i tweets/views.py. –

+0

Tak, oczywiście. Daj sekundę – ufo

Odpowiedz

5

Nie jestem zaznajomiony z książką, której używasz, więc nie mogę udzielić ci żadnych porad na jej podstawie. Jeśli książka jest dla Django 1.7, łatwiej będzie użyć Django 1.7 zamiast Django 1.8, przynajmniej jeśli zaczynasz od Django.

Jeśli chcesz trzymać się Django 1.8, oto jak naprawić błąd aktualnie zobaczyć:

Plik settings.py ma mieszankę starych ustawieniach szablonów, takich jak TEMPLATE_DIRS i TEMPLATE_LOADERS (Django < = 1,7), i nowe ustawienia pod TEMPLATES (Django 1.8+). Najpierw usuń stare ustawienia

Po drugie, wygląda na to, że DIRS jest niepoprawne w ustawieniu TEMPLATES.

Definiowanie BASE_DIR, które powinny być zawarte w settings.py domyślnie po uruchomieniu ./manage.py startproject

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

Następnie zmień TEMPLATES do

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

Witaj, dziękuję za napiwek. Zmieniłem wszystkie zalecane ustawienia, ale to nie pomaga – ufo

+0

Co wyświetla się po dodaniu druku (SZABLONY) do 'settings.py'? Proszę [edytuj] swoje pytanie i dołącz nowe śledztwo. Skopiuj i wklej tekst zamiast dołączonego zrzutu ekranu. – Alasdair

+0

print (TEMPLATES) wyświetla taką listę: [{'OPCJE': {'process_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors. auth ',' django.contrib.messages.context_processors.messages ']},' APP_DIRS ': True,' DIRS ': [' C: \\ Documents and Settings \\ Admin \\ Мои документы \\ dj \\ mytweets \ \ templates '],' BACKEND ':' django.template.backends.django.DjangoTemplates '}] – ufo

-1

Ustaw ścieżkę szablonu w DIR [] z ustawieniami.py

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