【问题标题】:Flask template inheritance - not executing but no errorsFlask 模板继承 - 不执行但没有错误
【发布时间】:2020-09-16 00:29:51
【问题描述】:

我正在学习模板继承,我有点困惑。当我导航到index.html 时,我希望标题出现在浏览器的选项卡上。我希望将此功能内置到我继承自的base.html 文件中,这样app.py 上的函数index 只需传递参数标题(和html文件名)即可执行为如上所述。

由于某种原因,代码未按预期运行;标题不在浏览器选项卡上。

app.py:

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html',title='index')

if __name__ == "__main__":
    app.run(debug=True)

index.html:

<!DOCTYPE html>
{%extends "base.html"%}
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
  </head>
  <body>

  </body>
</html>

base.html:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    {%block head%}
      {% if title %}
      <title> {{title}} </title>
      {%endif%}
    {%endblock%}
  </head>
  <body>
    {%block body%}{%endblock%}
  </body>
</html>

index.html 和 base.html 都在模板文件夹中,这是 jinja 运行所必需的。没有触发任何错误,只是标题没有按预期格式化。

我做错了什么?

【问题讨论】:

    标签: python flask layout template-inheritance


    【解决方案1】:

    我想通了,我需要将块语句的标题行拉出!微妙但有很大的不同。

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title></title>
        {%block head%}
        {%endblock%}
          {% if title %}
          <title> {{title}} </title>
          {%endif%}
      </head>
      <body>
        {%block body%}{%endblock%}
      </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      您的base.html 有两个&lt;title&gt; 标签。这不是有效的 html。 您需要删除空的并允许在所有情况下将标题作为参数传递。

      <!DOCTYPE html>
      <html lang="en" dir="ltr">
        <head>
          <meta charset="utf-8">
          <title></title> <!-- Remove this line here! -->
          {%block head%}
            {% if title %}
            <title> {{title}} </title>
            {%endif%}
          {%endblock%}
        </head>
        <body>
          {%block body%}{%endblock%}
        </body>
      </html>
      

      【讨论】:

        猜你喜欢
        • 2019-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-05
        • 2012-08-07
        • 1970-01-01
        相关资源
        最近更新 更多