包含模板标签在django中不起作用

时间:2013-04-10 18:38:08

标签: django

我的Views.py文件如下所示

  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

由于

4 个答案:

答案 0 :(得分:16)

我遇到了同样的问题,但我会以其他有类似问题的用户可以理解的方式回答这个问题。

你可能在包含的html文件中有某种模板块, 这个块要么是期望某种类型的包含,要么是导致错误调用django传递的异常,因此你无法看到错误, 如果您在父模板中使用{% load someLoad %},那么也可以在包含的html中使用它, 我想这会从版本变为版本。

在我(非常具体)的情况下,我在包含的html文件中遗漏了这个:

{% load i18n %} 
{% load cms_tags sekizai_tags %}

答案 1 :(得分:4)

我遇到了类似的问题。我能够通过临时复制和粘贴我想要直接包含在父页面(base.html)中的html(即navigation.html)来诊断它。似乎如果包含的html中存在错误,它就不会被读入并且不会出现错误。

将navigation.html中的代码粘贴到base.html后,我收到500错误,因为navigation.html中的某个已命名的网址没有反转。

答案 2 :(得分:3)

如果包含模板有任何问题/错误,默认情况下django不会显示错误。您可以使用设置变量TEMPLATE_DEBUG = True启用它。然后,当您尝试加载该页面时,您将能够在模板中查看错误。

在上述情况下,所包含的模板中可能缺少某些加载标记{% load xxx %}

答案 3 :(得分:1)

包含语句失败而不会引发错误的另一种情况是,如果您正在使用扩展另一个模板的模板,并且 include 不在命名<强>块

{% extends "my_base.html" %}

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

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

在这种情况下,不会包含file2.html,因为它不在一个块中,你将不会收到任何警告信息,并会在你意识到你所做的事情之前尝试各种各样的事情: - )