<title> {% block title%} Home {% endblock%} </title> не переопределяется другой страницей? - PullRequest
0 голосов
/ 06 сентября 2018

Это мой базовый файл

{% load static %}
{% include "feed/header.html" %}
{% block content%}

{% endblock %}
{% include "feed/footer.html" %}

Это мой заголовок, который включает заголовок:

{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>
        {% block title %} Home {% endblock %}
     </title>

Поэтому, когда я пытаюсь переопределить заголовок на странице сведений, он всегда показывает заголовок заголовка, т. Е. Home (не изменять), но не заголовок страницы сведений, который я переопределяю. Ниже приведен код, который я использовал на странице сведений:

{% extends 'feed/base.html'%}
{% block title %} Details {% endblock %}

{% block content %}

some views
{% endblock %}

Так помогите мне разобраться с этой проблемой.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Как сказано в документации , вы можете только "переопределить" блоки, определенные в шаблонах, из которых вы расширяете прямо или косвенно (т.е. вы расширяете из шаблона, который расширяет сам себя):

Тег включения следует рассматривать как реализацию «рендеринга этого подшаблона и включения HTML», а не как «разбора этого подшаблона и включения его содержимого, как если бы оно было частью родительского элемента». Это означает, что между включенными шаблонами нет общего состояния - каждое включение является полностью независимым процессом рендеринга.

Блоки оцениваются до их включения. Это означает, что шаблон, который включает в себя блоки из другого, будет содержать блоки, которые уже были оценены и обработаны, а не блоки, которые могут быть переопределены, например, расширяющимся шаблоном.

Таким образом, вам необходимо встроить ваш блок в родительский шаблон. Например:

{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>
        <b>{% block title %} Home {% endblock %}</b>
     </title>
</head>
{% block content%}

{% endblock %}
{% include "feed/footer.html" %}

и затем переопределить его в «подшаблоне».

0 голосов
/ 06 сентября 2018

В документах для тега include указано, что это не будет работать:

Блоки оцениваются до они включены. Это означает, что шаблон, который включает в себя блоки из другого, будет содержать блоки, которые уже были оценены и обработаны - не блоки, которые могут быть переопределены, например, расширяющим шаблоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...