2013-04-10 75 views
9

我Views.py文件看起來像下面包括模板標籤在Django不工作

def homepage(request): 
     template = 'homepage.html' 
     list_display_template = 'list.html' 
     list = model.objects.all() 

     return render_to_response(template, 
      {'list_display_template': list_display_template, 
      'list' : list,}, 
      context_instance=RequestContext(request)) 

而且我homepage.html看起來象下面這樣: -

{% extends "base.html" %} 

    {% block main_content %} 
     {% include list_display_template %} 
    {% endblock %} 

而且我list_display_template(list.html)有以下信息

< div class= "span10"> 
    {% for item in list %} 
     <p> {{ item }}</p> 
     {% endfor %} 
    </div> 

上述工作正常開發,但在生產include標籤不工作,當我檢查元素時,它不顯示list.html中的任何項目。有人可以幫助這一點。

編輯: - 我的文件夾結構如下

project_name/ 
    project_name/ 
     settings.py 
    static/ 
     css/ 
     images/ 
    templates/ 
     homepage.html 
     list.html 
     base.html 

感謝

+0

如果您做'{%i在你的'homepage.html'中包括'list.html'%}'它應該工作。 – Ngenator 2013-04-10 18:42:22

+0

「{%include」list.html「%}'是否有效? – karthikr 2013-04-10 18:42:41

+0

沒有。上述兩個都不起作用。我試着給完整的路徑名'模板/ list.html'...即使這不起作用 – Dev 2013-04-10 19:11:04

回答

15

我有同樣的問題,但我會回答的方式,其他的用戶提供了類似的問題可以理解這個問題。

您可能在包含的html文件中有某種模板塊, 該塊要麼是期望包含某種類型的內容,要麼是導致錯誤,其中有一個調用異常的django通過,因此您無法看到錯誤, 如果您在父模板中使用{% load someLoad %}然後在包含的html中使用它, 我想這個版本會有所不同。

在我的(非常具體)情況下,我有這個缺失被包含的HTML文件:

{% load i18n %} 
{% load cms_tags sekizai_tags %} 
+1

就是這樣,在包含的模板中缺少i18n負載......奧卡姆從未失敗。 – TheBronx 2015-08-05 15:54:22

+1

我剛剛有一個類似的問題,幾乎因爲它而瘋了。是什麼讓它變得更加複雜呢?它只發生在生產服務器上,而不是在我的機器上。後來,我發現那個我用'包含'的導航欄有urls我沒有slugify,以致造成了很多錯誤,但他們被包含聲明沉默。 謝謝^ _^ – Zee 2015-12-13 23:40:07

2

我只是有一個類似的問題。我能夠通過臨時複製並粘貼我想直接包含到父頁面(base.html)中的html(即navigation.html)來診斷它。看來如果在包含的html中有錯誤,它只是不會被讀入,也不會出現錯誤。

將navigation.html中的代碼粘貼到base.html中,我得到了500錯誤,因爲navigation.html中的一個指定網址沒有反轉。

1

如果包含模板有任何問題/錯誤,默認情況下django不會顯示錯誤。您可以使用設置變量啓用它TEMPLATE_DEBUG = True然後,當您嘗試加載該頁面時,您將能夠查看模板中的錯誤。

在上述情況下,可能會在包含的模板中缺少一些加載標籤{% load xxx %}

+0

在Django 1.8及更高版本中,您應該將'TEMPLATES [0] [「OPTIONS」] [「debug」]'設置爲'True'。 – Flimm 2017-03-21 10:34:37

0

另一種情況的包括聲明而不產生錯誤會失敗的,如果你是在一個延伸的另一模板的工作,和你的包括是一個名爲之外:

{% extends "my_base.html" %} 

{% block content %} 
    {{ block.super }} 
    {% include "partials/file1.html" %} 
{% endblock %} 

{% include "partials/file2.html" %} 

在這種情況下,file2.html將不會被包含,因爲它不在一個塊中,並且您將不會收到警告消息,並且在您意識到您所做的事情之前會嘗試各種各樣的事情:-)