Django系列 | [3]模板

Django是一款开源的Python web框架,它提供了一系列的工具和库,使得开发web应用变得更加简单和高效。其中,模板是Django中非常重要的一部分,它是一种将数据和HTML页面结合起来的方式,可以使得开发者更加灵活地控制web应用的输出结果。在本篇教程中,我们将会介绍Django中模板的基本语法和使用方法。

创建模板

在Django中,模板文件的默认位置是在app目录下的templates文件夹中。如果你还没有创建该文件夹,可以通过以下命令进行创建:

$ mkdir -p app_name/templates

其中,app_name表示你的应用名称。接着,在templates文件夹中创建一个名为index.html的文件,用于展示我们的模板。

模板语法

Django模板语言(Template Language)是一种基于Python的简单、直观和易于使用的语言。在模板中,可以使用变量、标签和过滤器等元素来处理和呈现数据。以下是一些常用的模板语法元素:

(1)变量

变量是模板中最基本的元素,用于呈现数据。在模板中,可以使用{{ variable }}的语法来输出变量。其中,variable是一个Python对象,可以是一个字符串、一个数字、一个列表或者一个字典等。例如,在index.html中添加以下代码:

<h1>{{ title }}</h1>

在视图中传递title变量:

def index(request):
    title = 'Welcome to Django'
    return render(request, 'index.html', {'title': title})

此时,当用户访问index页面时,将会显示一个大标题“Welcome to Django”。

(2)标签

标签是模板中的一种特殊语法,用于控制模板的流程和逻辑。在模板中,可以使用{% tag %}的语法来使用标签。例如,以下是一些常用的标签:

  • {% for %}:用于循环迭代列表或字典等数据;

  • {% if %}:用于判断条件是否成立;

  • {% block %}:用于定义模板块;

  • {% extends %}:用于继承父模板;

  • {% include %}:用于包含其他模板。

例如,在index.html中使用{% for %}标签循环遍历一个列表:

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

在视图中传递items变量:

def index(request):
    items = ['apple', 'banana', 'cherry']
    return render(request, 'index.html', {'items': items})

此时,当用户访问index页面时,将会显示一个无序列表,其中包含三个水果名称。

(3)过滤器

过滤器是模板中的一种特殊语法,用于对变量进行处理和格式化。在模板中,可以使用{{ variable|filter }}的语法来使用过滤器。例如,以下是一些常用的过滤器:

  • safe:用于将HTML标签输出为实际的HTML标签;

  • upper/lower:用于将字符串转换为大写或小写;

  • date:用于将日期格式化;

  • length:用于获取列表、字典或字符串的长度。

例如,在index.html中使用date过滤器将日期格式化:

<p>今天是{{ today|date:"Y年m月d日" }}</p>

在视图中传递today变量:

from datetime import date

def index(request):
    today = date.today()
    return render(request, 'index.html', {'today': today})

此时,当用户访问index页面时,将会显示今天的日期,例如“今天是2023年02月23日”。

模板继承

Django中的模板继承是一种重要的技术,可以使得开发者更加高效地组织和管理模板。在模板继承中,我们可以定义一个基础模板(Base Template),并在其它模板中继承该模板,并添加自己的内容。

例如,我们可以在app_name/templates中创建一个名为base.html的基础模板:

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

在该模板中,我们定义了两个块(Block):title和content。在其它模板中,可以继承base.html,并重写这些块,来添加自己的内容。

例如,在index.html中继承base.html,并重写title和content块:

{% extends "base.html" %}

{% block title %}Welcome to Django{% endblock %}

{% block content %}
    <h1>{{ title }}</h1>
    <ul>
    {% for item in items %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
{% endblock %}

在视图中传递title和items变量:

def index(request):
    title = 'My Django App'
    items = ['apple', 'banana', 'cherry']
    return render(request, 'index.html', {'title': title, 'items': items})

此时,当用户访问index页面时,将会显示一个大标题“My Django App”,以及一个无序列表,其中包含三个水果名称。

总结

在本篇教程中,我们介绍了Django中模板的基本语法和使用方法。模板是Django中非常重要的一部分,它可以使得开发者更加灵活地控制web应用的输出结果。在使用模板时,我们可以使用变量、标签和过滤器等元素来处理和呈现数据,同时也可以使用模板继承来组织和管理模板。希望本篇教程可以作为初学者入门Django模板的基础教程,但模板是Django框架中一个比较复杂的部分,还有很多高级用法和技巧需要学习和掌握。建议读者在掌握了基础内容之后,继续深入学习Django官方文档和相关书籍,加强对模板的理解和应用能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值