13

我的 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>

以上在开发中工作正常,但在生产中包含标签不起作用,当我检查元素时,它没有显示 list.html 中的任何项目。有人可以帮忙吗?

编辑:-我的文件夹结构如下

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

谢谢

4

6 回答 6

19

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

您可能在包含的 html 文件中有某种模板块,该块要么期望包含某种类型,要么导致错误调用 django 传递的异常,因此您无法看到错误,如果您{% load someLoad %}在父模板中使用然后在包含的 html 中也使用它,我猜这会随着版本的变化而变化。

在我的(非常具体的)案例中,我在包含的 html 文件中缺少这个:

{% load i18n %} 
{% load cms_tags sekizai_tags %}
于 2014-01-21T10:41:27.570 回答
10

另一种包含语句将失败而不引发错误的情况是,如果您正在使用扩展另一个模板的模板,并且您的包含位于命名之外:

{% extends "my_base.html" %}

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

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

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

于 2018-02-12T22:29:11.947 回答
4

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

将 navigation.html 中的代码粘贴到 base.html 中,我收到 500 错误,因为 navigation.html 中的一个命名 url 没有反向。

于 2016-03-15T12:25:59.710 回答
3

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

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

于 2016-11-23T11:44:08.370 回答
0

我有同样的问题,我尝试了所有的方法。但仍然没有包含“html”。然后,我尝试将“html”从应用程序/模板移动到项目/模板。它的工作。所以我将html文件移回,并在setting.py中添加关于模板路径的路径。解决了。即使您没有在 setting.py 中添加模板路径,pycharm 仍然可以将“包含文件”链接到确切位置。并毫无错误地运行 django 项目......我花了 3 天......

于 2022-01-10T02:27:16.213 回答
0

如果您不想弄乱template tags,loadinclude选项,还有另一种方法可以做到这一点:

使用您的参数显式渲染模板,将其存储为字符串,然后作为上下文渲染到主模板中。

from django.template.loader import render_to_string
    def get_context_data(self, **kwargs):
        ctx['loader'] = render_to_string('common/loader.html', {'loader': randint(0, 15)})
        return ctx
于 2021-11-10T14:43:24.120 回答