0

私はherokuでdjangoアプリを構築していて、os.pathモジュールで多くの問題に直面しています。私のプロジェクトはtemplates、ローカルホストで完全に機能しているのに、herokuを見つけることができません。

これは私のプロジェクト階層です(簡単に):

project/
        project/
               settings.py
               urls.py
               views.py
               ..
        manage.py
        templates/
                 css/
                 media/
                 Templates/
                          home.html

そのため、私os.pathはsettings.pyにテンプレートディレクトリを追加していました。

currDir = os.path.dirname(__file__)
templateDir = os.path.join(os.path.join(os.path.split(currDir)[0], "templates"), "templates")
TEMPLATE_DIRS = (
    templateDir,

)

これは私のローカルホストでは完全に機能していますが、Herokuでは機能していません。

以下は、heroku(herokuで実行)について言及されています

Djangoは、これらのテンプレートを次の順序でロードしようとしました。

ローダーdjango.template.loaders.filesystem.Loaderの使用:

/app/templates/templates/home.html (File does not exist)

*ローダーdjango.template.loaders.app_directories.Loaderの使用:*

/app/.heroku/venv/lib/python2.7/site-packages/django/contrib/auth/templates/home.html(File does not exist)
4

3 に答える 3

2

技術的には、os.path は「project/project」を指します。これは、settings.py が配置されている場所だからです。「テンプレート」ディレクトリをそこに移動してみてください。それは私のために働いた!

templateDir を次のように変更してください。

    templateDir = os.path.dirname(__file__) 
    TEMPLATE_DIRS = (
    os.path.join(templateDir, "templates"),
于 2012-10-28T16:33:27.683 に答える
1

Windows と *inx システムの小さな違いの 1 つは、ファイルの命名です。 Windows, winDows, windows, windowSLinux ではなく、Windows では同じファイルを表します。

これは私が Heroku で直面した問題です (おそらく、*inx 上にあります)。そのため、TEMPLATE_DIRS で正確なフォルダー名を使用する必要がありました。

これが正解です。

templateDir = os.path.join(os.path.join(os.path.split(currDir)[0], "templates"), "Templates")

前のものは次のとおりです。

templateDir = os.path.join(os.path.join(os.path.split(currDir)[0], "templates"), "templates")
于 2012-06-29T03:26:53.587 に答える
1

同様のHeroku/MEDIA_ROOTの問題で、次のようなことがうまくいきました。

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

BASE_PATH = os.path.dirname(__file__)
TEMPLATE_DIRS = (
    os.path.join(BASE_PATH, "project/templates/templates"), 
)

ただし、Django のデフォルトのディレクトリ構造にこだわる場合は、TEMPLATE_DIRS を設定する必要はまったくありません。つまり、 にhome.htmlあるはずproject/project/templatesです。通常、css/javascript はそのディレクトリの外にあります。これが Heroku で動作することを確認できます。

于 2012-06-28T20:32:30.923 に答える