<title> {% block title %} Home {% endblock %} </title> 没有被其他页面覆盖?

ims*_*ful 3 django django-templates

这是我的基本文件

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

{% endblock %}
{% include "feed/footer.html" %}
Run Code Online (Sandbox Code Playgroud)

这是我的标题,其中包括标题:

{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>
        {% block title %} Home {% endblock %}
     </title>
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试覆盖详细信息页面中的标题时,它始终显示标题的标题,即主页(不更改),但不显示我覆盖的详细信息页面的标题。以下是我在详细信息页面中使用的代码:

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

{% block content %}

some views
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

所以帮我解决这个问题。

Wil*_*sem 5

正如文档所述,您只能“覆盖”直接或间接扩展的模板中定义的块(即从扩展自身的模板扩展):

\n\n
\n

include 标记应被视为 \xe2\x80\x9crender 此子模板的实现,并包含 HTML\xe2\x80\x9d,而不是 \xe2\x80\x9c 解析此子模板并包含其内容,就好像它是父\xe2\x80\x9d。这意味着包含的模板 \xe2\x80\x93 之间没有共享状态,每个包含都是一个完全独立的渲染过程。

\n\n

块在被包含之前会被评估。这意味着包含来自另一个模板的块的模板将包含已经评估和渲染的块,而不是可以被扩展模板等覆盖的块。

\n
\n\n

因此,您需要将块内联到父模板中。例如:

\n\n
{% load staticfiles %}\n<!DOCTYPE html>\n<html lang="en">\n<head>\n    <meta charset="UTF-8">\n     <title>\n        {% block title %} Home {% endblock %}\n     </title>\n</head>\n{% block content%}\n\n{% endblock %}\n{% include "feed/footer.html" %}
Run Code Online (Sandbox Code Playgroud)\n\n

然后在“子模板”中覆盖它。

\n