20 Django模板之使用模板的内容

在上一篇中,我们深入探讨了Django模板语言的基本构造与语法。在这一篇中,我们将专注于如何使用Django模板来动态渲染内容。我们会通过具体的案例来展示如何利用模板语言和模板系统来生成HTML页面的内容。

什么是Django模板?

Django模板是用于生成动态HTML的一个强大工具,它通过将数据与模板代码结合,来生成最终显示给用户的网页。模板可以包含HTML标记、模板标签和模板过滤器,使得我们能够灵活地展示内容。

基本示例

假设我们正在构建一个博客应用,我们想要展示一篇博文的标题和内容。在我们的 views.py 中,我们可能会有如下代码:

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

def post_detail(request, post_id):
post = {
'title': 'Django从零开始',
'content': '这是我们学习Django的第一篇文章。',
}
return render(request, 'post_detail.html', {'post': post})

在上面的例子中,我们创建了一个视图 post_detail,它接受 post_id 作为参数,获取对应的博文数据,并将其传递给模板 post_detail.html

模板文件

接下来,我们需要创建 post_detail.html 模板文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ post.title }}</title>
</head>
<body>
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
</body>
</html>

在这个模板中,{{ post.title }}{{ post.content }} 是模板语言的语法,用于访问并显示我们在视图中传递的博文数据。

使用模板过滤器

Django模板还提供了一些内置的过滤器,可以用来处理数据。例如,我们可以使用 truncatewords 过滤器来限制文本的字数。修改我们的模板如下:

1
<p>{{ post.content|truncatewords:10 }}</p>

这样,模板将只显示博文内容的前10个单词。

使用条件和循环

在实际应用中,处理列表数据是常见的需求。例如,如果我们有多个博文,我们可能会在模板中使用条件和循环来展示每篇博文。我们修改视图返回多个博文:

1
2
3
4
5
6
def post_list(request):
posts = [
{'title': 'Django从零开始', 'content': '这是第一篇文章。'},
{'title': 'Django的高级特性', 'content': '这是第二篇文章。'},
]
return render(request, 'post_list.html', {'posts': posts})

然后,我们在 post_list.html 中使用循环来显示所有博文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>博文列表</title>
</head>
<body>
<h1>博文列表</h1>
<ul>
{% for post in posts %}
<li>
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
</li>
{% empty %}
<li>没有博文。</li>
{% endfor %}
</ul>
</body>
</html>

在这个例子中,我们使用了 {% for post in posts %} 来遍历所有博文。如果 posts 为空,模板会显示“没有博文”。

小结

在本篇中,我们学习了如何使用Django模板来动态生成内容,如何使用模板标签来控制数据的展示,以及如何通过循环和条件来处理复杂的逻辑。这为我们在下一篇的模板继承打下了良好的基础。

在下一篇中,我们将探索Django模板的继承特性,从而实现更高效和可重用的模板结构。通过对当前已学知识的巩固,接下来的学习将会更加深入与完整。请继续关注!

20 Django模板之使用模板的内容

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

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论