【问题标题】:How do I include a template that includes another template?如何包含包含另一个模板的模板?
【发布时间】:2012-08-15 23:06:33
【问题描述】:

我有 index.html,它加载 project/p1.html,它加载 project/p2.html。 project/p1.html 和 project/p2.html 各自加载正常,所以我知道它们可以正常工作。问题是试图将 project/p1.html 加载到 index.html 中,其中包含以下语句:

{% include 'project/p1.html' %}

project/p1.html 有声明:

{% include 'project/p2.html' %}

加载 index.html,出现错误:

VariableDoesNotExist at /
Failed lookup for key [objects] in u"[{'params': {}}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x7fd3dc0e2410>}, {'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fd3dc0e2210>, 'user': <django.utils.functional.SimpleLazyObject object at 0x7fd3dc10c790>}, {},......

如果我从 project/p1.html 中删除“{% include 'project/p2.html' %}”,则 index.html 加载正常,错误消息消失(但显然我看不到我的内容)。

我该如何解决这个问题?

编辑:继承人“project/p2.html”:

<table class="mytable">

{% for object in objects %}
    <tr class="my_row">
      <td>{{ object.name }}</td>
    </tr>
{% endfor %}
</table>

这里是views.py:

from models import Mytable
from django.shortcuts import render_to_response, RequestContext

def my_request(request,
    template="project/p1.html",
    page_template="project/p2.html"):
    context = {
        'objects': Mytable.objects.all().order_by('-date'),
        'page_template': page_template,
    }

    if request.is_ajax():
        template = page_template
    return render_to_response(template, context,
        context_instance=RequestContext(request))

【问题讨论】:

    标签: python django


    【解决方案1】:

    在模板中包含模板没有什么特别需要做的,但您需要确保所有模板中引用的所有变量都在您的模板上下文中定义。根据您的具体操作,您可能会发现这很有帮助:Django Templates - Changing context for an 'include' template

    【讨论】:

      【解决方案2】:

      它正在寻找它不可用的变量。传入额外的上下文参数。

      {% include "name_snippet.html" with person="Jane" greeting="Hello" %}

      编辑:Documentation

      【讨论】:

      • OK...我可能应该在我的问题中说明这一点:'project/p1.html' 是一个无限滚动页面,它从 p2.html 加载 mysql 结果。如何将未硬编码的对象传递给 p1.html?即 {% include "project/p2.html" object = object %}?
      • 谢谢!我可以毫无问题地加载 p1 但 p2 没有加载分页/无限滚动。 (在我的编辑中查看我的 p2.html)。它在“”的 html 标记中加载,但不会加载任何行。在 index.html 我有“{% include 'project/p1.html' with objects=objects %}”...我需要传递任何其他参数吗?
      • 我试了p2.html,竟然把分页去掉了……还是无法访问对象
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2018-02-02
      • 2016-04-10
      相关资源
      最近更新 更多