2

私は多くのクリックとsyncdbを実行しましたが、まだ解決策を見つけていません。このエラーが発生します:

TemplateDoesNotExist at /quotes/
quotes/index.html
Request Method: GET
Request URL:    http://quoteboard94.herokuapp.com/quotes/
Django Version: 1.4.4 
Exception Type: TemplateDoesNotExist
Exception Value:    
quotes/index.html
Exception Location: /app/.heroku/python/lib/python2.7/site-packages/django/template/loader.py in find_template, line 138
Python Executable:  /app/.heroku/python/bin/python
Python Version: 2.7.3
Python Path:    
['/app',
 '/app/.heroku/python/lib/python2.7/site-packages/pip-1.1-py2.7.egg',
 '/app',
 '/app/.heroku/python/lib/python27.zip',
 '/app/.heroku/python/lib/python2.7',
 '/app/.heroku/python/lib/python2.7/plat-linux2',
 '/app/.heroku/python/lib/python2.7/lib-tk',
 '/app/.heroku/python/lib/python2.7/lib-old',
 '/app/.heroku/python/lib/python2.7/lib-dynload',
 '/app/.heroku/python/lib/python2.7/site-packages',
 '/app/.heroku/python/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']

私の設定にはこれがあります:

PROJECT_DIR = os.path.dirname(__file__) #for heroku

TEMPLATE_DIRS = (
    os.path.join(PROJECT_DIR, '/templates/'), # for heroku
    '/Users/jacksongonzales/projects/QuoteBoard/templates/',
)

import os.path同様にトップです。

TEMPLATE_DIRSの下のそのパスは、私のテンプレートへの絶対パスです。

PROJECT_DIR変数とTEMPLATE_DIRS変数に適切なものをパンチインしていませんか?

4

2 に答える 2

3

私はそれがすべきだと信じています

os.path.join(PROJECT_DIR, 'templates'), # for heroku

スラッシュなし。

os.path.join(PROJECT_DIR, '/templates/'), # for heroku

/templates/期待するパスではなく戻ります

ドキュメントから:

いずれかのコンポーネントが絶対パスである場合、以前のすべてのコンポーネント(Windowsでは、以前のドライブ文字があった場合はそれも含む)が破棄され、結合が続行されます。

于 2013-02-20T23:22:48.980 に答える
2

これがherokuプロジェクトのセットアップです。

# here() gives us file paths from the root of the system to the directory
# holding the current file.
here = lambda * x: os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)

PROJECT_ROOT = here("..")
# root() gives us file paths from the root of the system to whatever
# folder(s) we pass it starting at the parent directory of the current file.
root = lambda * x: os.path.join(os.path.abspath(PROJECT_ROOT), *x)

....

TEMPLATE_DIRS = (
    root('templates'),
)

更新:私のプロジェクトは、デプロイされたものと同じローカルテンプレート構造を持っているため、テンプレートディレクトリに直接パスを追加する必要はありません。あなたはあなたの中に1つ持っています:

'/Users/jacksongonzales/projects/QuoteBoard/templates/',

の最初のエントリTEMPLATE_DIRSが正しい場合、2番目のエントリが必要ですか?

于 2013-02-20T23:05:52.080 に答える