跳到主要内容

Django 模板语法

介绍

Django模板系统是Django框架中用于生成HTML、XML或其他文本格式的强大工具。它允许开发者将Python代码与HTML分离,从而实现更清晰、更易维护的代码结构。Django模板语法简单直观,适合初学者快速上手。

基本语法

变量

在Django模板中,变量用双花括号 {{ }} 包裹。变量可以是上下文中的任何数据,例如字符串、数字、列表或字典。

html
<p>欢迎, {{ username }}!</p>

假设 username 的值为 "Alice",则输出为:

html
<p>欢迎, Alice!</p>

标签

Django模板标签用 {% %} 包裹,用于执行逻辑操作,如循环、条件判断等。

循环

使用 {% for %} 标签可以遍历列表或字典。

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

假设 items 的值为 ["苹果", "香蕉", "橙子"],则输出为:

html
<ul>
<li>苹果</li>
<li>香蕉</li>
<li>橙子</li>
</ul>

条件判断

使用 {% if %} 标签可以进行条件判断。

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

如果 user.is_authenticatedTrue,则输出为:

html
<p>欢迎回来, Alice!</p>

如果为 False,则输出为:

html
<p>请登录。</p>

过滤器

过滤器用于在模板中对变量进行格式化或处理。过滤器用管道符 | 连接在变量后面。

html
<p>{{ message|lower }}</p>

假设 message 的值为 "Hello, World!",则输出为:

html
<p>hello, world!</p>

实际案例

假设我们有一个博客应用,需要在首页显示所有文章的标题和发布日期。

html
<h1>最新文章</h1>
<ul>
{% for post in posts %}
<li>
<h2>{{ post.title }}</h2>
<p>发布日期: {{ post.pub_date|date:"Y-m-d" }}</p>
</li>
{% endfor %}
</ul>

假设 posts 的值为:

python
[
{"title": "Django入门", "pub_date": "2023-10-01"},
{"title": "Django模板系统", "pub_date": "2023-10-05"}
]

则输出为:

html
<h1>最新文章</h1>
<ul>
<li>
<h2>Django入门</h2>
<p>发布日期: 2023-10-01</p>
</li>
<li>
<h2>Django模板系统</h2>
<p>发布日期: 2023-10-05</p>
</li>
</ul>

总结

Django模板语法简单而强大,通过变量、标签和过滤器,开发者可以轻松地将动态内容嵌入到HTML中。掌握这些基本语法后,你可以开始构建更复杂的Django应用。

附加资源

练习

  1. 创建一个Django模板,显示一个包含用户姓名和年龄的列表。
  2. 使用 {% if %} 标签,根据用户的年龄显示不同的消息。
  3. 使用过滤器将用户姓名转换为大写。
提示

在练习中,尝试使用不同的Django模板标签和过滤器,以加深对模板语法的理解。