2016-12-21 206 views
1

我瞭解Django的模板繼承,並在努力。Django的:TemplateDoesNotExist錯誤基本模板

我在同一個目錄中的其他模板做了一個​​模板。

,並作爲一個子模板的第一行中鍵入{% extends "base_post_login.html" %}

但是,當子模板通過後端渲染提高了TemplateDoesNotExist錯誤。

這是settings.py(相關部分):

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [], 
    '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', 
     ], 
    }, 
}, 
] 

所有模板可以正確地呈現,如果它不擴展和父模板。

我該怎麼辦?

+0

你的問題不清楚。你能解釋一下你如何構建你的應用程序,並提到你的模板文件夾的位置...... –

+0

看起來像你的孩子模板和'base_post_login.html'不在同一個目錄中。並且你將'APP_DIRS'設置爲'True'。你的模板文件是否存在於不同應用程序的文件夾下如果是這樣,您可能需要在'DIRS'選項中定義這些焊料。 – alix

+0

@alix他說>在與其他模板相同的目錄中 – Saksow

回答

3

您正在使用的Django extends走錯了路,就應該採取父模板名稱,以便做到這一點:

{% extends "base.html" %}

編輯

OK我明白了,你應該使用模板路徑喜歡你當你渲染你的其他模板:

假設你渲染像這樣的「templates/child_page.html」,那麼你應該延伸相同的方式{% extends "templates/base.html" %}

+0

對不起,這是..這是一個錯字..現在修正了..這是base_post_login.html – sachsure

+0

我編輯了我的答案 – Saksow

+1

哦耶..這工作..謝謝..我認爲這不是必需的,因爲兩個模板都在同一目錄中,但它們通過視圖呈現。 – sachsure