详解Python的Django框架中的模版继承

下面我将详细讲解 Python 的 Django 框架中的模版继承。

什么是 Django 模版继承?

在 Django 中,模版继承是一种重用模版代码的方法。它允许我们在不重复编写相同代码的情况下定义基本模板(通常是布局),并在子模板中继承这些基本模板。这使得模板更具可重用性和可维护性。

Django 模版继承的基本结构

一般来说,Django 模版继承具有以下基本结构:

{% extends “base.html” %}

{% block content %}

{% endblock %}

其中,{% extends %} 标签指定从哪个模板进行继承,并且被继承的模板是占位符的。在子模板中,{% block %} 标签用于定义占位符并允许子模板修改父模板并插入子模板特定的内容。

示例1

现在我们来看一个具体的示例。假设我们有一个基本模板 base.html,我们想要在该模板的内容区域插入子模板 child.html 的内容。我们可以这样做:

base.html:

<html>
<head>
    <title>{% block title %} {% endblock %}</title>
</head>
<body>
    {% block content %}
    {% endblock %}
</body>
</html>

child.html:

{% extends "base.html" %}

{% block title %}
    My Child Page
{% endblock %}

{% block content %}
    <h1>Welcome to My Child Page</h1>
{% endblock %}

在子模板中,我们使用 {% extends "base.html" %} 指定从 base.html 模板中继承。{% block title %} 定义了一个占位符,我们在子模板中可以重载它。同样,{% block content %} 也定义了一个占位符,我们使用这个占位符在子模板中插入特定的内容。最终,子模板中的内容将插入基本模板中的占位符对应位置,形成最终的输出页面。

示例2

现在,我们再来看一个稍微复杂一些的例子。假设我们有一个 Blog 网站,其中包含多个页面,并且我们希望所有页面都具有类似的外观和布局。我们可以使用 Django 的模版继承策略来实现这一目标。

base.html:

<html>
<head>
    <title>{% block title %}My Blog{% endblock %}</title>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>{{ blog_name }}</h1>
            <ul class="page-links">
                <li><a href="/">首页</a></li>
                <li><a href="/archive/">归档</a></li>
                <li><a href="/about/">关于</a></li>
            </ul>
        </div>
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>

archive.html:

{% extends "base.html" %}

{% block title %}
    {{ blog_name }} - 归档
{% endblock %}

{% block content %}
    <ul class="post-list">
        {% for post in posts %}
            <li><a href="/post/{{ post.id }}">{{ post.title }}</a></li>
        {% endfor %}
    </ul>
{% endblock %}

about.html:

{% extends "base.html" %}

{% block title %}
    {{ blog_name }} - 关于
{% endblock %}

{% block content %}
    <p>这个站点专注于分享关于 Django 和 Python 的教程和资源。</p>
{% endblock %}

在这个例子中,我们定义了一个基本模板 base.html,用于呈现网站的头部和底部。各个页面可以直接继承基本模板,并可以使用 content 块插入具体的内容。其中,ul page-links 是我们在 base.html 中定义的导航栏,子模板可以对其进行修改。例如,在 about.html 中,我们只在 content 块中添加了一条关于站点的简短介绍,而修改了 title 块。

这个例子中,我们还使用了 Django 模板引擎的另外一个特性,变量渲染。在基本模板中,我们使用了变量 {{ blog_name }} 来动态渲染网站名称,并在子模板中使用了变量 {{ posts }},遍历所有 posts 并呈现一个带有超链接的文章列表。

总之,Django 模版继承是一种非常有用的技术,在减少代码重复和提高代码可维护性方面具有巨大优势。希望这篇文章能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python的Django框架中的模版继承 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django前后端交互

    前后端交互的方式有两种,一种是自己写个html页面,插入数据,一种是使用django自带的后台管理,插入数据 下面介绍方式1: post.html <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <title>Title&…

    Django 2023年4月13日
    00
  • Django之多对多查询与操作方法详解

    Django之多对多查询与操作方法详解 在Django中,多对多关系是非常常见且重要的关系之一,学习多对多查询与操作方法对于开发Django应用程序非常有用。下面将对多对多关系的查询及操作方法进行详细讲解。 多对多查询 多对多查询的核心在于通过中间表进行查询。在Django中,对于多对多关系,会默认生成一个中间表来连接两个相关的模型类。假设有两个模型类Boo…

    Django 2023年5月16日
    00
  • django文档学习之applications使用详解

    “Django文档学习之applications使用详解”是一篇介绍如何使用应用程序(Applications)的文章。应用程序是Django中的一个重要概念,它是一组处理某个特定功能的代码集合,可以提供一些通用的功能,如用户注册、数据展示、认证等,而这些功能都可以在不同的Django项目中复用。 该文章主要包括以下几个方面: 一、应用程序(Applicat…

    Django 2023年5月16日
    00
  • 【Django后台数据管理】后台数据新建或者保存,经常遇到提示This field is required

        如下图:   2、设置blan属性为True   blan=True  

    Django 2023年4月13日
    00
  • django 与 vue 的完美结合 以及NodeJS与Django协同应用开发

    django 与 vue 的完美结合 实现前后端的分离开发之后在整合 用django后端,前端用vue,做一个普通的简单系统,我就是一搞后端的,听到vue也是比较震惊,之前压根没接触过vue. 看了vue的一些文档,还有一些项目,先说一下django与vue的完美结合吧! 首先是创建一个django项目  django-admin startproject …

    Django 2023年4月11日
    00
  • Django使用第三方模块django-password-reset重置密码

    网上关于django第三方模块django-password-reset重置密码的几篇博客有一个严重的bug 见博客:https://blog.csdn.net/qq_42820268/article/details/81940353 中的内容。 关键是:上文提到的urls.py配置, 出现错误,并提出解决办法,实际上并没有解决,应该写为:url(r’^pw…

    Django 2023年4月13日
    00
  • Django实现文件上传下载功能

    下面我将为你详细讲解“Django实现文件上传下载功能”的完整攻略,包含以下两部分内容: 文件上传功能实现步骤 首先,在Django项目中创建一个文件上传的视图,可以在views.py中创建: from django.shortcuts import render from django.http import HttpResponse def upload…

    Django 2023年5月15日
    00
  • Django logging日志模块实例详解(日志记录模板配置)

    让我来给您讲解一下“Django logging日志模块实例详解(日志记录模板配置)”的攻略,涉及到日志记录模板配置的两个示例。 简介 在Django应用程序中使用logging模块记录日志非常重要。因为日志可以帮助我们找到错误并快速解决问题。Django中的logging模块遵循Python的标准库logging模块。logging模块可以让我们记录不同类…

    Django 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部