2012-08-01 168 views
3

當Heroku查找我的html文件時,出現TemplateDoesNotExist錯誤。這些文件都在開發服務器上同步。該TEMPLATE_DIRS設置爲:Heroku找不到Django模板

TEMPLATE_DIRS = ['/Users/jonathanschen/Python/projects/skeleton/myportfolio/templates',] 

但試圖加載頁面的herokuapp頁我收到以下錯誤時: 我覺得有一些非常基本的,我在這裏失蹤。

TemplateDoesNotExist at/
index.html 
Request Method: GET 
Request URL: http://morning-coast-2859.herokuapp.com/ 
Django Version: 1.4.1 
Exception Type: TemplateDoesNotExist 
Exception Value:  
index.html 
Exception Location: /app/.heroku/venv/lib/python2.7/site-packages/django/template/loader.py in find_template, line 138 

Template-loader postmortem 

Django tried loading these templates, in this order: 
Using loader django.template.loaders.filesystem.Loader: 
/Users/jonathanschen/Python/projects/skeleton/myportfolio/templates/index.html (File does not exist) 
Using loader django.template.loaders.app_directories.Loader: 
/app/.heroku/venv/lib/python2.7/site-packages/django/contrib/auth/templates/index.html (File does not exist) 
/app/.heroku/venv/lib/python2.7/site-packages/django/contrib/admin/templates/index.html (File does not exist) 

回答

11

你需要更新你的TEMPLATE_DIRS設置爲指向的東西的Heroku可以找到 - 你有它設置現在將在本地工作路徑,但Heroku的不知道哪裏/Users/jonathanschen/是(因爲它不沒有那個文件夾)。你可能想嘗試使你的TEMPLATE_DIRS設置使用相對路徑:

import os.path 
PROJECT_DIR = os.path.dirname(__file__) # this is not Django setting. 
TEMPLATE_DIRS = (
    os.path.join(PROJECT_DIR, "templates"), 
    # here you can add another templates directory if you wish. 
) 

(從http://www.djangofoo.com/35/template_dirs-project-folder

在Django中1.8+,在TEMPLATES而不是改變DIRS選項:

# BASE_DIR should already be in settings 
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, "templates")], 
     ... 
    } 
] 
+0

哎girasquid感謝您的迴應,我嘗試更新設置與您建議的相對路徑,但它仍然無法找到模板出於某種原因。 – Jonathan 2012-08-01 22:11:32

+0

它看起來在這裏:Django嘗試加載這些模板,按以下順序: 使用loader django.template.loaders.filesystem.Loader: /app/myportfolio/templates/index.html(文件不存在) 使用loader django。 template.loaders.app_directories.Loader: /app/.heroku/venv/lib/python2.7/site-packages/django/contrib/auth/templates/index.html(文件不存在) /app/.heroku /venv/lib/python2.7/site-packages/django/contrib/admin/templates/index.html(文件不存在) – Jonathan 2012-08-01 22:12:01

+0

@girasquad:你可以在本地運行應用程序嗎? – Parker 2012-08-01 22:14:54