【问题标题】:Flask template inheritance clarificationFlask 模板继承说明
【发布时间】:2019-09-04 21:26:48
【问题描述】:

我正在尝试在 Flask(以前熟悉 django)中建立一个站点,但在获取模板以正确呈现时遇到了困难。

我有一个 base.html、home.html 和一个 navigation.html。我的路线呈现 home.html 模板,它扩展了 base.html 模板,并且工作正常。但在我的 base.html 中,还有另一个称为导航的块。我在导航文件中输入的任何内容似乎都没有呈现。

base.html

<DOCTYPE html>
<html>
 <head>
  <title>{% block title %} {% endblock %} </title>
 </head>

 <body>
  {% block navigation %}
  {% endblock %}
  {% block content %}
  {% endblock %}
 </body>
</html>

home.html

{% extends 'base.html %}

{% block title %} lorem ipsum {% endblock %}

{% block content %} 
 <h1> Here is text </h1>
 <p> Lorem ipsum paragraph </p>
{% endblock %}

导航.html

{% extends 'base.html %}
{% block navigation %}
<nav>
insert any html here, I used a p tag
</nav>
{% endblock %}

无论是什么,我都无法在 navigation.html 中显示任何内容。 在 django 中,我不记得有这个问题。 根据我最好的批判性思维,我假设我正在渲染 home.html 而不是 base.html,因此 home.html 可以使用 base,但它不能将其范围扩展到实际使用 navigation.html。 我不确定,而且我已经厌倦了把头埋在桌子上。

【问题讨论】:

  • 所以你是说你正在渲染navigation.html,但&lt;nav&gt; 没有显示?如果是这样,我同意这种情况永远不会发生。我们能否查看渲染模板的 Python 代码,以检查它是否真的渲染了您期望的模板?

标签: python jinja2


【解决方案1】:

在这里做一个假设,如果我弄错了,请澄清。

我怀疑你的意思是在 index.html 内(以及在所有其他需要通用导航的页面中){% include 'navigation.html' %}

如果是这种情况,您可以从navigation.html 中删除{% extends ... %}

【讨论】:

  • 这就是我所缺少的!昨天我一定是度过了地狱般的一天,才这么糊涂,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
相关资源
最近更新 更多