2010-10-31 74 views
5

我已經配置了必要的東西來處理django中的擴展模板函數。這裏是我的代碼:django擴展問題 - 子模板未顯示

settings.py中

def my_dir(): 
    import os.path 
    return os.path.abspath(os.path.dirname(__file__)) 
TEMPLATE_DIRS = (my_dir() + '/app/templates',) #dynamic template directory 

在base.html文件 - 位於應用程序/模板/網站

.... 
<div id="SideBar" class="FloatLeft"> 
{% block sidebar %} {% endblock %} 
</div> 
.... 

在sidebar.html - 位於應用程序/模板/網站

{% extends "site/base.html" %} 
{% block sidebar %} 
    some code here 
{% endblock %} 

我也嘗試了{%包括「網站/ sidebar.html」%}在base.html文件標籤檢查模板目錄,是的包括標籤正在工作...

{%extends%}有什麼問題?爲什麼它不檢測到它的父模板..

請幫我傢伙..你的幫助是極大的讚賞...林仍然在等待答案.. TNX

+1

您的觀點是什麼樣子? – sunn0 2010-10-31 07:34:45

回答

6

哪個模板是在您的視圖渲染?它應該是孩子,而不是父母。

+0

謝謝你解決我的問題。我結束了這個選擇。非常感謝。你的權利,我的觀點是指向父模板..現在我將它改爲sidebar.html,現在它完美的工作...... :)非常感謝你。 :) – EVG 2010-10-31 08:36:58

+0

btw ..如何關閉這個話題?再次感謝:) – EVG 2010-10-31 08:37:52

0

有很多的問題。簡短的回答是「不,你不能立即改變模板目標,即使你能做到,你也絕對不會這樣做」

+0

這不會改變,它使用settings.py所在的目錄,並且只有在導入settings.py時纔會發生。 – Tom 2010-10-31 08:40:04

0

你的主要問題是您在TEMPLATE_DIRS設置中忘記了一個逗號。試試這個:

TEMPLATE_DIRS = (my_dir() + '/app/templates',) 

請忽略柴郡的答案。

+0

ive將其更改爲TEMPLATE_DIRS =(my_dir()+'/ app/templates'),但仍然沒有運氣。 :( – EVG 2010-10-31 02:08:49

+0

仍然w8ng的答案...任何人都可以幫我關於這個問題。我卡在這個問題:( – EVG 2010-10-31 05:19:57

0

使用os.path.join來組合2個目錄。

import os.path 
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates'), 
) 

在這裏,我假設templates就是你把你的模板目錄。現在,要訪問這些模板,這是它們的基礎目錄。因此,在一些其他的文件擴展base.html做這樣的 -

{% extends "base.html" %} 
... 
{% endblock %} 
+0

ive試過你的解決方案,但子模板仍然沒有顯示..模板文件夾是我所有的HTML文件所在的位置它被分成許多文件夾,在問題中,base.html位於站點文件夾中。 – EVG 2010-10-31 06:11:22

+0

是否有除TEMPLATE_DIRS之外的任何設置需要設置?我認爲我的TEMPLATE_DIRS正在工作,因爲{%include%}標記正在工作好的...... – EVG 2010-10-31 06:18:41

+0

'TEMPLATE_DIRS'是你設置模板路徑的唯一地方,請把所有的模板放在一個地方,除非你有很強的理由不要這麼做 – 2010-10-31 06:24:26

0

你確定你有正確的模板加載設置? 你應該有這個在您的settings.py:

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

我不知道YOUT問題是什麼,但你應該檢查以下幾點:

  • 的{%擴展%}踏歌應該在模板文件中的第一個(和放在一個空行之後可以肯定)
  • 我認爲對基本模板的引用是相對於你的TEMPLATE_DIR。嘗試不同的方式,例如將兩個模板放在同一級別等。
  • 檢查兩個模板中的所有標記以確保它們都格式正確
  • 檢查文件的編碼。如果是UTF-8,請嘗試在兩個文件中禁用BOM。
  • 也許這是您的目錄設置的問題。嘗試硬編碼絕對路徑來檢查。

這些都是我可以想象的問題,但我不能保證它會奏效。

+0

感謝您的回覆......丹尼爾得到了正確的解決方案。希望這個話題能夠提醒別人:) – EVG 2010-10-31 08:40:36