Flask наследование шаблона - не выполняется, но ошибок нет - PullRequest
0 голосов
/ 28 мая 2020

Я изучаю наследование шаблонов и немного запутался. Когда я перехожу к index.html, я хочу, чтобы заголовок отображался на вкладке в моем браузере. И я хочу, чтобы эта функция была встроена в файл base.html, от которого я наследуюсь, чтобы функции index на app.py нужно было передавать только заголовок аргумента (и имя файла 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. Ошибок не возникает, заголовок просто не форматируется должным образом.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Ваш base.html имеет два тега <title>. Что неверно 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>
0 голосов
/ 28 мая 2020

Я разобрался, мне нужно было вытащить строки заголовка из инструкции блока! Незаметно, но имеет большое значение.

<!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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...