Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/django-template-tags-extends.html

django extends 模版标签继承关系详解,使用方法及示例

Django 模板标签详解 Django 模板标签详解


在 Django 中,extends 是一个模板标签,用于创建模板继承关系。它允许您在一个基础模板中定义通用的布局和结构,然后在子模板中扩展或覆盖这些内容。这种模板继承的方式可以大大提高模板的可重用性和维护性。

语法和作用:

extends 标签的语法如下:

{% extends "base_template.html" %}

其中,"base_template.html" 是你希望子模板继承的基础模板的文件路径。当子模板被渲染时,它将首先查找这个基础模板,并将基础模板中的内容加载到子模板中。然后,子模板可以通过其他模板标签(如 block 标签)覆盖或扩展基础模板中的内容。

使用方法和使用场景:

  1. 创建基础模板 : 首先,您需要创建一个基础模板,该模板将包含通用的结构和布局,但是一些内容可能是动态的或需要在子模板中定制的部分,可以使用 block 标签来定义这些可变部分。

    base_template.html:

    <!DOCTYPE html>
    <html>
    <head>
        <title>{% block title %}Default Title{% endblock %}</title>
    </head>
    <body>
        <div id="header">
            <!-- Common header content -->
        </div>
        <div id="content">
            {% block content %}{% endblock %}
        </div>
        <div id="footer">
            <!-- Common footer content -->
        </div>
    </body>
    </html>
  2. 创建子模板: 接下来,您可以创建一个或多个子模板,这些子模板将继承基础模板并可以定制特定部分。

    child_template.html:

    {% extends "base_template.html" %}
    
    {% block title %}
        Custom Title - My Website
    {% endblock %}
    
    {% block content %}
        <h1>Welcome to my website!</h1>
        <p>This is a customized content for the home page.</p>
    {% endblock %}

    在这个例子中,子模板 child_template.html 继承了 base_template.html,并且在 titlecontent 块中定义了定制的内容。

示例解释:

假设有一个 Django 视图将 child_template.html 渲染为响应:

from django.shortcuts import render

def home_view(request):
    return render(request, 'child_template.html')

在这种情况下,当 home_view 视图被请求时,Django 将首先查找 child_template.html,然后发现它继承自 base_template.html,因此会加载 base_template.html。然后,Django 将会检查 child_template.html 中的块,并将其插入到对应的 block 标签位置。

最终生成的 HTML 页面将类似于:

<!DOCTYPE html>
<html>
<head>
    <title>Custom Title - My Website</title>
</head>
<body>
    <div id="header">
        <!-- Common header content -->
    </div>
    <div id="content">
        <h1>Welcome to my website!</h1>
        <p>This is a customized content for the home page.</p>
    </div>
    <div id="footer">
        <!-- Common footer content -->
    </div>
</body>
</html>

注意,在 child_template.html 中,我们定义了 block titleblock content 的内容。这些内容将覆盖 base_template.html 中对应的 block 标签中的默认内容。

这样,您可以在基础模板中定义整个网站的通用布局,同时在子模板中根据需要进行定制,从而实现模板的重用和维护。

在Django中,模板继承是一种强大的功能,它允许你在不重复代码的情况下构建一致的网页布局。html):创建子模板,并继承基础模板:使用场景 ...
在Django中,lorem模版标签并不是内置标签,它可能是一个自定义的标签或者来自第三方库。然而,通常情况下,它用于在模版中生成随机的Lo ...
下面我将详细介绍if模板标签的语法、作用、使用方法和使用场景,并结合代码示例进行说明。在上面的示例中,我们通过if模板标签根据商品的价格显示 ...
在Django中,verbatim是一个模板标签,其主要作用是让Django模板系统忽略标签中的内容,直接原样输出内容,不进行任何解析。它的 ...
在Django中,模板标签是一种特殊的语法,允许你在模板中嵌入Python代码,从而实现更复杂的逻辑和数据展示。通过使用{%load%}标签 ...