2017-12-04 5 views
0

を実行するときに罰金されているではない...Jinja2のテンプレート作成のオプションは、私は次のエラーが表示され、テストでの作業が、サーバー

ERRORS: 
?: (templates.E001) You have 'APP_DIRS': True in your TEMPLATES but also specify 'loaders' in OPTIONS. Either remove APP_DIRS or remove the 'loaders' option. 

...ジャンゴ1.11とその標準的なテストで、すべてのテストスイートを実行しようとしますランナー。

manage.py runserverただし、正常に動作します。

エラーをjinja2テンプレートに戻しました。私のジャンゴテンプレートの設定は次のようになります。

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.jinja2.Jinja2', 
     'DIRS': [os.path.join(BASE_DIR, 'jinja2')], 
     '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', 
      ], 
      'environment': 'mysite.jinja2.environment', 
     }, 
    }, 
    { 
     "BACKEND": "django.template.backends.django.DjangoTemplates", 
     "DIRS": [os.path.join(BASE_DIR, 'templates')], 
     "APP_DIRS": True, 
     'OPTIONS': { 
      'debug': DEBUG, 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.template.context_processors.i18n', 
       'django.template.context_processors.media', 
       'django.template.context_processors.static', 
       'django.template.context_processors.tz', 
       'django.contrib.messages.context_processors.messages', 
       'mysite.context_processors.app_rendering_ctx', 
      ], 
     }, 
    }, 
] 

あなたはそこOPTIONS dictsのいずれかにはloadersキーはませんので、エラーが真剣に混乱して表示されます。

これは、コンテキストプロセッサや環境とは関係ありません。

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.jinja2.Jinja2', 
     'DIRS': [os.path.join(BASE_DIR, 'jinja2')], 
     'OPTIONS': { 
      #stuff 
     }, 
    }, 
    { 
     "BACKEND": "django.template.backends.django.DjangoTemplates", 
     "DIRS": [os.path.join(BASE_DIR, 'templates')], 
     "APP_DIRS": True, 
     'OPTIONS': { 
      #stuff 
     }, 
    }, 
] 

しかし、今、私はそう訪問し、私のアプリのディレクトリ内jinja2テンプレートを見つけることができません:それは、最初のエントリからAPP_DIRSキーを削除する

は、テストが実行できますjinja2テンプレート...に関連していますサイトはTemplateNotFoundのエラーを表示します(もちろん!)。

jinja2テンプレートエンジンは、loadersキーを独自のオプションdictに動的に付加しますか?そして、なぜサーバがうまく動くときに、テストランナーがこれで失敗するのですか?

答えて

0

私はそれが回避策ではない解決策なので、選択した答えとしてこれをチェックするつもりはない...しかし、他の人が手で、彼らはDIRSキーに検索するAPP_DIRSを追加することで、この上で取得することができます:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.jinja2.Jinja2', 
     'DIRS': [os.path.join(BASE_DIR, 'jinja2'), 
       os.path.join(BASE_DIR, '..', 'myapp', 'jinja2'), 
       os.path.join(BASE_DIR, '..', 'myotherapp', 'jinja2')], 
     'OPTIONS': { 
      #stuff 
     }, 
    }, 
    { 
     "BACKEND": "django.template.backends.django.DjangoTemplates", 
     "DIRS": [os.path.join(BASE_DIR, 'templates')], 
     "APP_DIRS": True, 
     'OPTIONS': { 
      #stuff 
     }, 
    }, 
] 

もちろん、これは汎用ソリューションでもなく、アプリがたくさんある場合は簡単に複製することもできません。ちょうどその罰金のために。

関連する問題