Jupyter AI
📢 新上线功能: 最新题库(点击体验),帮助大家更好实践编程和 AI 练习题!

19 Django模板之模板语言

📅发表日期: 2024-08-10

🏷️分类: Django从零教程

👁️阅读量: 0

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

什么是Django模板?

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

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

Django模板的基本结构

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

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ header }}</h1>
    <p>{{ content }}</p>
</body>
</html>

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

使用变量

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

视图(views.py)

from django.shortcuts import render

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

模板(home.html)

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ header }}</h1>
    <p>{{ content }}</p>
</body>
</html>

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

控制结构

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

if语句

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

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

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

for循环

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

<ul>
{% for item in item_list %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

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

模板过滤器

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

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

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

模板继承

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

基础模板(base.html)

<!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)

{% extends "base.html" %}

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

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

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

小结

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

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

💬 评论

暂无评论

🌐Django 入门 (滚动鼠标查看)