1

次のエラーが発生します。これは、私がDjangoアプリケーションをApache + mod_wsgiを使ってデプロイする場合のプロダクションのみです。それは開発サーバー(私のコンピュータ)で完璧に機能します:開発時にDjango TemplateDoesNotExistがプロダクションサーバーで動作する場合

TemplateDoesNotExist at/
base.html 

postmortem表示されているように、設定から2つのフォルダのうち1つのみが検索されています。

ここは自分の設定です。 base.htmlテンプレートは、「テンプレート」フォルダ内にある:

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

ここで私は、このテンプレートが実際に存在することを確認します。

>>> from django.template.loader import get_template 
>>> get_template("base.html") 
<django.template.backends.django.Template object at 0x7f6af68d38d0> 

あなたは私のテンプレートのdirsに2のうちの1つのフォルダのみを見ることができるように開発サーバーではうまく動作している間に検索されています。これがなぜ起こるのでしょうか?それはある種のパーミッションの問題かもしれません。

+1

Apacheはあなたのコードを特別なユーザーとして実行します。他のユーザーがアクセスできるように、ディレクトリ/ファイルに対するアクセス許可です。 –

+0

@GrahamDumpleton例を挙げてください。 – Marijus

+0

'' ls -las/home/bot_frontend/horses/templates/base.html''と '' ls -lasd/home/bot_frontend''を実行するとどうなりますか? –

答えて

0

settings.pyにDIRSの2番目のエントリを追加すると、この問題が解決されました。

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': ['templates'],' 
     'DIRS': [BASE_DIR + "/templates", ], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
関連する問題