18 Django 模板语言基础

18 Django 模板语言基础

在 Django 中,模板语言是用于生成动态 HTML 的一种强大工具。掌握 Django 模板语言的基本概念和用法,有助于快速开发出功能丰富、用户友好的 web 应用。

模板的基本结构

Django 模板是由 HTML 和模板标签组成的文件。模板标签用 {% %} 包裹,纯文本内容则直接写在 HTML 中。

示例模板

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>我的 Django 应用</title>
</head>
<body>
<h1>欢迎来到我的 Django 应用</h1>
</body>
</html>

变量的使用

在模板中,可以通过双花括号 {{ }} 来引用变量。例如,如果我们在视图中传递了一个变量 name,可以在模板中这样使用:

1
<h1>欢迎, {{ name }}!</h1>

视图代码示例

1
2
3
4
from django.shortcuts import render

def index(request):
return render(request, 'index.html', {'name': '用户'})

控制结构

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
6
7
<ul>
{% for article in articles %}
<li>{{ article.title }}</li>
{% empty %}
<li>没有文章可显示。</li>
{% endfor %}
</ul>

视图代码示例

1
2
3
def article_list(request):
articles = Article.objects.all()
return render(request, 'article_list.html', {'articles': articles})

过滤器

Django 提供了多种过滤器,用于格式化变量。使用 | 符号来应用过滤器。例如,将文本转换为大写:

1
<p>{{ name|upper }}</p>

常用的过滤器包括:

  • date:格式化日期
  • length:获取列表长度
  • default:提供默认值

示例

1
2
<p>当前时间: {{ current_time|date:"Y-m-d H:i:s" }}</p>
<p>文章数量: {{ articles|length }}</p>

自定义标签和过滤器

如果内置的标签和过滤器无法满足需求,可以自定义它们。创建一个标签库,首先在你的应用目录下创建一个 templatetags 文件夹,并添加 __init__.py 和自定义标签文件。

1
2
3
4
5
6
7
8
# myapp/templatetags/custom_tags.py
from django import template

register = template.Library()

@register.filter
def add_suffix(value, suffix):
return f"{value}{suffix}"

在模板中使用自定义标签:

1
2
{% load custom_tags %}
<p>{{ title|add_suffix:" - 我的博客" }}</p>

模板继承

Django 的模板继承机制允许你创建一个基础模板,其他模板可以在此基础上进行扩展。使用 {% extends %}{% block %} 定义和使用模板块。

基础模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- base.html -->
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>{% block title %}我的网站{% endblock %}</title>
</head>
<body>
<header><h1>网站头部</h1></header>
<main>
{% block content %}{% endblock %}
</main>
<footer><p>网站底部</p></footer>
</body>
</html>

子模板

1
2
3
4
5
6
7
8
<!-- index.html -->
{% extends "base.html" %}

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

{% block content %}
<h2>欢迎来到首页</h2>
{% endblock %}

总结

通过学习 Django 模板语言的基础知识,你可以有效地在项目中处理动态内容。掌握变量、控制结构、过滤器、自定义标签和模板继承的使用,将帮助你构建出复杂而富有表现力的网页。随着对 Django 框架的深入了解,你将能够进一步扩展和优化你的应用。

18 Django 模板语言基础

https://zglg.work/django/18/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议