2015-11-11 112 views
3

我是Python Django網站開發新手。我正在使用Django 1.8.6。我剛開始建立一個項目。在設置文件中,我有以下內容:Django 1.8無法加載模板

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: 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_app.urls' 

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

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
) 

我在'DIRS'部分包含了模板文件夾。但是Django無法從該文件夾加載任何模板。它提供了以下錯誤信息:

的Django試圖加載這些模板,按以下順序:

Using loader django.template.loaders.filesystem.Loader: 
Using loader django.template.loaders.app_directories.Loader: 
    /home/user/Python_Django/Web_App/DjangoVE/lib/python3.4/site-packages/django/contrib/admin/templates/base.html (File does not exist) 

    /home/user/Python_Django/Web_App/DjangoVE/lib/python3.4/site-packages/django/contrib/auth/templates/base.html (File does not exist) 

出於測試目的,如果我提供的模板文件夾的絕對路徑在「DIRS」領域,它仍然不工作。例如:

'DIRS': ['/home/user/Python_Django/Web_App/myApp/templates'] 

請指點我的錯誤。

+0

什麼是你要加載的模板的位置,以及你是如何試圖加載它? – Alasdair

+0

確保您已將BASE_DIR指向正確的路徑。 哪個網址正在被點擊?流程從url - > views - >模板開始。模板會根據視圖進行加載,並根據url來選擇視圖。 – cutteeth

+0

@Alasdair - 我添加了大多數settings.py文件行。請再看看這個問題。 – coderx

回答

2

確保myapp包含在您的INSTALLED_APPS中。然後,應用程序目錄加載器應該選取myapp/templates中的模板。

不包括myapp/templatesDIRS,它會通過應用程序目錄加載器被拾起,因爲你已經設置APP_DIRSTrue

DIRS設置允許您包括項目範圍的目錄。在你的情況,設置

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

將允許您從/home/user/Python_Django/Web_App/templates加載模板。

+1

是的,OP的問題是他們沒有在INSTALLED_APPS中包含「myapp」。 –

+0

@Alasdair,我在INSTALLED_APPS中包含了myapp,評論了'DIRS'這一行,重新啓動了服務器,但仍然顯示 - 「TemplateDoesNotExist at /」 – coderx

+0

請用新的回溯更新您的問題。 「myapp」現在包含在回溯中嗎?你正試圖加載的base.html模板在哪裏? – Alasdair

0

變化

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

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

這將使templateloader找到文件。

+0

它不起作用。 Django仍然顯示 - 「TemplateDoesNotExist at /」 – coderx

0

變化

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

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

這將使templateloader找到文件。

他的回答是正確的,你可以在你的應用上創建一個dir「模板」! enter image description here

;)感謝@Sebastian Wozny