Python Django flatpages模板标记不';不能使用模板继承

Python Django flatpages模板标记不';不能使用模板继承,python,django,django-1.6,django-flatpages,Python,Django,Django 1.6,Django Flatpages,我有一个Django(1.6)应用程序,它继承了一个基本模板。我想在应用程序登录页中包含我的一个(当前正在工作的)flatpage,这是 这是我的模板: {% extends "path/to/base.html" %} {% load flatpages %} {% get_flatpages as fp %} {% block content %} <h3>Flatpage inclusion</h3> <p>Number of flatpage

我有一个Django(1.6)应用程序,它继承了一个基本模板。我想在应用程序登录页中包含我的一个(当前正在工作的)flatpage,这是

这是我的模板:

{% extends "path/to/base.html" %}
{% load flatpages %}
{% get_flatpages as fp %}

{% block content %}
  <h3>Flatpage inclusion</h3>
  <p>Number of flatpages: {{ fp|length }}
  <ul>
    {% for page in fp %}
      <li><a href="{{ page.url }}">{{ page.title }}</a></li>
    {% endfor %}       
  </ul> 
{% endblock content %}
一切正常。我在我的
fp
对象(9)中看到了flatpage的数量,我的无序列表显示了所有flatpage URL和标题

在我看来,这似乎是flatpages如何工作或Django如何进行模板继承的一个缺陷

基本模板(
/path/to/base.html
)中没有任何复杂的内容

:

加载自定义标记或过滤器库时,标记/过滤器仅可用 到当前模板–不是模板继承路径上的任何父模板或子模板

例如,如果模板foo.html具有{%load humanize%},则子模板(例如 has{%extends“foo.html”%})将无法访问人性化模板标记和过滤器。 子模板负责自己的{%load humanize%}

这是出于可维护性和合理性的考虑而提供的功能

还有人注意到这个错误吗?这是内置flatpages应用程序的例外吗

编辑1:

丹尼尔斯的回答是正确的。没有显示在
{%block%}
中包含flatpage内容,因此我没有想到需要这样做:

{% load flatpages %}
{% get_flatpages as flatpages %}
<ul>
  {% for page in flatpages %}
    <li><a href="{{ page.url }}">{{ page.title }}</a></li>
  {% endfor %}
</ul>
{%loadflatpages%}
{%get_flatpages作为flatpages%}
    {flatpages%中的页面为%s}
  • {%endfor%}

我想是我的错。活到老学到老。

问题是您的
get\u flatpages
标记位于父模板的任何块之外。这意味着它根本不会被调用


将其移动到内容块中,它应该会起作用。

只是为了重申正确的解决方案-
get\u flatpages
需要放置在将被引用的块中。因此,这将起作用:

{% extends "index.html" %}
{% load flatpages %}

{% block footer %}
    {% get_flatpages as flatpages %}
    {% for page in flatpages %}
    ...
    {% endfor %}
而这个将不起作用:

{% extends "index.html" %}
{% load flatpages %}
{% get_flatpages as flatpages %}

{% block footer %}        
    {% for page in flatpages %}
    ...
    {% endfor %}

是的,Django文档对此不是很清楚。

嗨,丹尼尔-谢谢!这起作用了。奇怪的是,Django文档没有明确地说这一点,或者我只是太过密集了。。。。
{% extends "index.html" %}
{% load flatpages %}
{% get_flatpages as flatpages %}

{% block footer %}        
    {% for page in flatpages %}
    ...
    {% endfor %}