2015-08-19 69 views
2

好吧,我使用的是django 1.8。我正在试图在我的视图中使用渲染模板。这是我的布局:Django不加载模板,但给模板位置的错误

├── db.sqlite3 
├── django_classr_test 
│   ├── __init__.py 
│   ├── __init__.pyc 
│   ├── __pycache__ 
│   │   ├── __init__.cpython-34.pyc 
│   │   ├── settings.cpython-34.pyc 
│   │   ├── urls.cpython-34.pyc 
│   │   └── wsgi.cpython-34.pyc 
│   ├── settings.py 
│   ├── settings.pyc 
│   ├── urls.py 
│   ├── urls.pyc 
│   ├── wsgi.py 
│   └── wsgi.pyc 
├── manage.py 
├── static_pages 
│   ├── admin.py 
│   ├── __init__.py 
│   ├── __init__.pyc 
│   ├── migrations 
│   │   ├── __init__.py 
│   │   └── __pycache__ 
│   │    └── __init__.cpython-34.pyc 
│   ├── models.py 
│   ├── __pycache__ 
│   │   ├── admin.cpython-34.pyc 
│   │   ├── __init__.cpython-34.pyc 
│   │   ├── models.cpython-34.pyc 
│   │   ├── urls.cpython-34.pyc 
│   │   └── views.cpython-34.pyc 
│   ├── templates 
│   │   └── static_pages 
│   │    ├── contact.html 
│   │    ├── index.html 
│   │    └── legal.html 
│   ├── tests.py 
│   ├── urls.py 
│   ├── urls.pyc 
│   ├── views.py 
│   └── views.pyc 

所以我有一个模板文件夹里面我的static_pages应用程序文件夹。所以,我应该只能说render(request, 'static_pages/index.html'),对吧?这是我的观点:

TemplateDoesNotExist at/

static_pages/templates/static_pages/index.html 

Request Method:  GET 
Request URL: http://localhost:8000/ 
Django Version:  1.8.3 
Exception Type:  TemplateDoesNotExist 
Exception Value:  

static_pages/templates/static_pages/index.html 

Exception Location:  /usr/local/lib/python2.7/dist-packages/django/template/loader.py in get_template, line 46 
Python Executable: /usr/bin/python 
Python Version:  2.7.6 
Python Path:  

['/home/anthony/_/dev/django_classr_test', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client'] 

Server time: Wed, 19 Aug 2015 19:27:59 +0000 

错误说,它不能在static_pages/templates/static_pages/index.html找到一个模板:

from django.shortcuts import render 

from django.http import HttpResponse 
def index(request): 
    return render(request, 'static_pages/templates/static_pages/index.html') 

然而,当我访问该网页它给这个错误。但这正是它的地方?这是怎么回事?

如果我不使用渲染,只是返回'hello world'它不会给出错误,所以我不认为这是路由问题。

这里是我的项目设置文件:

""" 
Django settings for django_classr_test project. 

Generated by 'django-admin startproject' using Django 1.8.3. 

For more information on this file, see 
https://docs.djangoproject.com/en/1.8/topics/settings/ 

For the full list of settings and their values, see 
https://docs.djangoproject.com/en/1.8/ref/settings/ 
""" 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
import os 

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


# Quick-start development settings - unsuitable for production 
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/ 

# SECURITY WARNING: keep the secret key used in production secret! 
SECRET_KEY = '00000000000000000000000000000000000000000000' 

# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = True 

ALLOWED_HOSTS = [] 


# Application definition 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
) 

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 = 'django_classr_test.urls' 

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', 
      ], 
     }, 
    }, 
] 

WSGI_APPLICATION = 'django_classr_test.wsgi.application' 


# Database 
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 


# Internationalization 
# https://docs.djangoproject.com/en/1.8/topics/i18n/ 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'UTC' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.8/howto/static-files/ 

STATIC_URL = '/static/' 

所以,我猜我没有正确配置设置?

回答

0

您需要将您的应用程序添加到安装的应用程序,它会自动找到您的模板文件夹。

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'static_pages', 
) 

APPS_DIR设置将装载在templates目录何事你没有明确指定目录中安装任何应用程序的服务。

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', 
      ], 
     }, 
    }, 
]