2013-04-10 81 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将不会被包含,因为它不在一个块中,并且您将不会收到警告消息,并且在您意识到您所做的事情之前会尝试各种各样的事情:-)