19 Django模板之模板语言

在上一章节中,我们讨论了Django视图如何与模型进行交互。在这一节中,我们将深入探索Django的模板语言,这将使我们能够在网页上呈现数据,实现动态的用户界面。

什么是Django模板?

Django模板是一个文本文件,通常是HTML格式,但也可以使用其他格式。模板可以包含静态数据(如HTML标记)和动态内容(由Django生成的内容),使用的是Django模板语言(DTL)。

模板语言的主要目的是将您的数据与视图中生成的上下文结合,从而生成动态的网页。它提供了一套简单易用的工具,允许我们使用变量、标签和过滤器来处理和显示数据。

Django模板的基本结构

一个简单的Django模板可能如下所示:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>{{ header }}</h1>
<p>{{ content }}</p>
</body>
</html>

在上面的模板中,{{ title }}{{ header }}{{ content }}都是变量标记,它们可以在视图中定义并传递到模板中。

使用变量

要在Django中使用模板变量,您只需在视图中创建一个上下文字典,并在模板中使用变量标记。以下是一个基本示例:

视图(views.py)

1
2
3
4
5
6
7
8
9
from django.shortcuts import render

def home(request):
context = {
'title': '我的Django网站',
'header': '欢迎来到我的网站',
'content': '这是一个使用Django创建的简单示例页面。',
}
return render(request, 'home.html', context)

模板(home.html)

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>{{ header }}</h1>
<p>{{ content }}</p>
</body>
</html>

在这个例子中,当用户访问首页时,视图会生成一个上下文并将其传递给模板。模板通过{{ }}语法使用这些变量。

控制结构

Django模板语言提供了一些控制结构,例如if语句for循环,允许我们根据条件显示内容。

if语句

以下是如何在模板中使用if语句的示例:

1
2
3
4
5
{% if user.is_authenticated %}
<p>欢迎回来, {{ user.username }}!</p>
{% else %}
<p>你好,访客!请登录。</p>
{% endif %}

在这个例子中,如果用户已登录,将显示“欢迎回来”,否则显示“你好,访客!”的消息。

for循环

您可以使用for标签遍历列表或字典中的项目:

1
2
3
4
5
<ul>
{% for item in item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>

在这个例子中,item_list 是视图中提供的一组数据,模板将遍历列表并为每个项目生成一个列表项。

模板过滤器

Django模板还引入了过滤器,这些是能够修改变量输出的简单函数。过滤器使用管道符号|来应用,如下所示:

1
<p>当前日期:{{ current_date|date:"Y-m-d" }}</p>

在这个例子中,date过滤器将current_date变量格式化为YYYY-MM-DD的格式。

模板继承

模板继承是Django模板系统的一项强大功能。您可以创建一个基础模板,在其上定义页面的通用结构,然后通过子模板来实现特定页面的细节。

基础模板(base.html)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}网站标题{% endblock %}</title>
</head>
<body>
<header>
<h1>我的Django网站</h1>
</header>
<div>
{% block content %} {% endblock %}
</div>
</body>
</html>

子模板(home.html)

1
2
3
4
5
6
7
8
{% extends "base.html" %}

{% block title %}首页{% endblock %}

{% block content %}
<h2>欢迎来到首页</h2>
<p>这里是首页的内容。</p>
{% endblock %}

在这个示例中,home.html继承了base.html,只需定义特定内容的block即可。这大大提高了代码的重用性。

小结

在本篇章中,我们深入探讨了Django模板语言,学习了如何创建动态网页,包括如何使用变量、控制结构和模板继承。这些技能与之前讨论的视图和模型的交互密切相关,因为它们结合在一起,形成了Django应用的核心。

在下一章节中,我们将具体了解如何使用模板渲染动态内容,使您的页面更具互动性和吸引力。让我们准备好开始使用Django模板!

19 Django模板之模板语言

https://zglg.work/django-zero/19/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论