Django中的模板

目录

一:基本概念

二:模板继承


在Django中,模板是用于呈现动态内容的HTML文件。它们允许你将动态数据与静态模板结合起来,生成最终的HTML页面。

Django模板使用特定的语法和标签来插入动态内容。你可以在模板中使用变量、过滤器和标签来控制内容的呈现方式。

一:基本概念

1 变量:在模板中,你可以使用双大括号{ { variable }}来插入变量。例如,如果你有一个变量name,你可以在模板中这样使用它:{ { name }}。

2 过滤器:过滤器允许你对变量进行转换或格式化。你可以在模板中使用管道符号|来应用过滤器。例如,如果你有一个变量date,你可以使用date_format过滤器来格式化日期:{ { date|date_format:"Y-m-d" }}。

3 标签:标签是用于执行更复杂的逻辑或操作的自定义函数。在模板中,你可以使用{% tag %}语法来调用标签。例如,你可以使用{% if %}标签来根据条件显示不同的内容

{% if user.is_authenticated %}  
    <p>Welcome, { { user.username }}!</p>  
{% else %}  
    <p>Please log in.</p>  
{% endif %}

4 继承:Django模板系统支持模板继承,允许你创建一个基础模板,并在其他模板中继承该基础模板的布局和样式。这使得你可以在多个模板之间共享相同的结构和样式,提高了代码的可重用性和维护性。
5 包含其他模板:除了继承基础模板外,你还可以在模板中使用{% include "template_name" %}标签来包含其他模板的内容。这允许你将页面划分为多个模块,并独立地管理和重用它们。
6 自定义标签和过滤器:除了内置的标签和过滤器外,你还可以创建自定义的标签和过滤器来扩展Django模板系统的功能。你可以在Django应用目录下的templatetags文件夹中创建自定义的标签和过滤器模块,并在模板中通过{% load my_filters %}或{% load my_tags %}来导入它们。

渲染一个模板:

要渲染模板,你可以使用Django的render()函数。这个函数接受一个请求对象、一个上下文对象和一个模板名,然后将上下文中的数据传递给模板进行渲染。

以下是一个简单的示例,演示如何在Django视图中使用模板:

from django.shortcuts import render  
from .models import MyModel  
  
def my_view(request):  
    context = {  
        'my_variable': 'Hello, world!',  
        'my_model': MyModel.objects.first()  
    }  
    return render(request, 'my_template.html', context)

二:模板继承

模板继承是一种机制,允许你创建一个基础模板,并在其他模板中继承该基础模板的布局和样式。这使得你可以在多个模板之间共享相同的结构和样式,提高了代码的可重用性和维护性。

要使用模板继承,你需要遵循以下步骤:

1:创建一个基础模板(Base Template):创建一个包含你想要共享的布局和样式的HTML文件。这个文件将作为其他模板的基础。
2:在其他模板中继承基础模板:在其他模板的开头部分,使用{% extends "基础模板的路径" %}标签来继承基础模板。确保将基础模板的路径正确指定为相对于TEMPLATES设置中指定的目录的路径。
3:在继承的模板中添加内容:在继承的模板中,你可以使用{% block %}标签来定义你想要覆盖或添加的内容块。这些内容块可以在基础模板中定义,并在继承的模板中进行覆盖或添加内容。

下面是一个简单的示例,演示了如何在Django中使用模板继承:

基础模板(base.html):

<!DOCTYPE html>  
<html>  
<head>  
    <title>{% block title %}默认标题{% endblock %}</title>  
</head>  
<body>  
    <header>  
        <!-- 头部内容 -->  
    </header>  
    <main>  
        {% block content %}{% endblock %}  
    </main>  
    <footer>  
        <!-- 页脚内容 -->  
    </footer>  
</body>  
</html>

继承基础模板的模板(child_template.html):

{% extends "base.html" %}  
  
{% block title %}  
    我的页面标题  
{% endblock %}  
  
{% block content %}  
    <h1>这是我的内容</h1>  
    <!-- 其他内容 -->  
{% endblock %}

在上面的示例中,base.html是一个基础模板,它定义了一个默认的标题和内容块。child_template.html继承了base.html,并覆盖了标题内容块和内容内容块,添加了自己的标题和内容。

相关推荐

  1. django 创建表模型meta

    2024-02-01 10:40:02       48 阅读
  2. Django模板语言

    2024-02-01 10:40:02       38 阅读
  3. Django模型基于类混入

    2024-02-01 10:40:02       25 阅读
  4. djangoQuerySet

    2024-02-01 10:40:02       41 阅读
  5. Django模板变量

    2024-02-01 10:40:02       27 阅读
  6. django实现适配器模式

    2024-02-01 10:40:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 10:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 10:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 10:40:02       82 阅读
  4. Python语言-面向对象

    2024-02-01 10:40:02       91 阅读

热门阅读

  1. 如何降低视频RTSP解码延迟

    2024-02-01 10:40:02       59 阅读
  2. 测试pytorch(GPU)安装,并输出版本号

    2024-02-01 10:40:02       58 阅读
  3. 第二章 Redis介绍及安装

    2024-02-01 10:40:02       58 阅读
  4. 人工智能在现代科技中的应用和未来发展趋势

    2024-02-01 10:40:02       66 阅读
  5. vivado 时钟规划

    2024-02-01 10:40:02       52 阅读
  6. C语言-算法-搜索剪枝与记忆化搜索

    2024-02-01 10:40:02       55 阅读
  7. 【无标题】

    2024-02-01 10:40:02       57 阅读