Django 模板基础:新手完全指南
大家好!今天我们来学习 Django 模板的基础知识。 Django想开始网络开发?或者您正在考虑入门? 不管是什么情况,Django 模板都是需要了解的重要部分。 一开始可能会让人望而生畏,但不用担心!在本篇文章中,我们将让学习 Django 模板的基础知识变得轻松有趣。
什么是 Django 模板?

Django 模板使用 动态生成 HTML 网页的工具在 Django 框架中,网页的 代表性(视图) 页面的一部分。模板不仅仅是 HTML 文档,它还结合了从数据库或动态数据中提取的信息,为用户提供个性化内容。这样就可以 前台和后台之间的联系 作用,并极大地促进了可重用性和可维护性。
主要特点
- 动态数据表示法
- 您可以使用模板语言在 HTML 页面中表示 Python 数据(字符串、列表、对象等)。
- 示例在页面上显示从数据库中提取的用户名或产品列表。
- 模板语言
- Django 有自己的 模板标记和过滤器以提供
- 您可以在 HTML 中加入基本的编程结构,如条件语句、循环等。
- 例如
{%,如果 user.is_authenticated %} <p>欢迎您,{{ user.username }}}!</p> {%,否则 %} <p>请登录。</p> {% endif %}
- 可重复使用的组件
- 模板是一个
包括和延长以在多个页面中重复使用通用元素(如页眉和页脚)。 - 举例说明:创建所有页面通用的基本布局模板。
- 模板是一个
- 客户端-服务器协作
- 服务器准备数据,使用模板生成最终的 HTML,并将其发送给客户端(浏览器)。
- 这样,客户端就能接收到简单的 HTML 渲染结果,而无需复杂的逻辑。
Django 模板的作用
- 网页示意图:通过分离数据和逻辑,开发人员可以直观地配置页面的内容和设计。
- 加强前后端协作后端开发人员可以专注于数据和业务逻辑,而前端开发人员则可以通过模板更专注于设计和用户体验。
Django 模板基础:创建基本结构
首先,在项目目录下创建一个 "模板 "文件夹,其结构与下图类似。
myproject/
├── myapp/
├── myproject/
模板/
└── manage.py而 settings.py 您需要在文件中添加模板目录。 DIRS':[BASE_DIR / 'templates']、 (很多人都会在这里出错,所以一定要使用 逗号 ( , ) ).
模板 = [
{ 'BACKEND
BACKEND': 'django.template.backends.django.DjangoTemplates'、
DIRS':[BASE_DIR / 'templates']、
APP_DIRS':True、
...
},
]创建第一个模板
现在 模板 文件夹内部 home.html 文件。下面的示例与普通的 html 文件无异,旨在向您传授 Django 模板的基础知识。
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>My Django Site</title>
</head>
<body>
<h1>你好,欢迎来到 Django 世界!</h1>
<p>这是我的第一个 Django 模板。</p>
</body>
</html>使用模板
要使用模板,必须在视图中使用 render 函数。 views.py 试着在文件中写下这样的内容带 # 的行是注释(解释)。
# 从 Django 的快捷方式模块中导入 render 函数。
# render 函数用于渲染指定的模板文件并返回 HTTP 响应。
从 django.shortcuts 导入 render
# 查看函数定义:home
# 调用此函数是为了响应 URL 请求。
# - request:由 Django 自动传递的 HttpRequest 对象,其中包含用户的请求信息。
def home(request):
# 渲染函数:
# - 第一个参数:传入请求对象。
# - 第二个参数:指定要渲染的模板文件名称('home.html')。
# - 第三个参数(可选):您可以向模板传递一个额外的数据(上下文)字典。
# - 返回值:返回包含已渲染 HTML 的 HttpResponse 对象。
return render(request, 'home.html')
向模板传递数据
您可以从视图向模板传递数据。
定义 # 主页视图函数
当 # 用户访问特定 URL 时,将调用此视图函数。
def home(request):
# 创建上下文字典
# - 定义要传递给模板的数据。
# - 在这里,我们为 "name "键赋值 "withdraw"。
# - 在模板中,您可以以 {{ name }} 的形式访问数据。
context = {'name': 'withdrawal'}
return render(request, 'home.html', context)
您可以在模板中使用这些数据
# {{ }}是 Django 模板语言使用的变量表达式。
# 它引用了视图函数中传递的上下文字典中 name key 的值。
# 示例如果在视图函数中以 context = {'name': 'withdraw'} 的形式传递,{{ name }} 将被替换为 "withdraw"。
<h1>您好,{{姓名 }}}!</h1>使用模板标记

为了将 HTML 与动态数据相结合,Django 模板语言使用了 模板标签和 变量表达式的标签。我们将逐一解释各种标签。
{% if ... %} / {% else %} / {% endif %} 1.
- 条件语句标记可让您根据特定条件对 HTML 内容进行分支。
如果标记,并在标记内写入条件表达式、不然是在不满足条件时执行的部分。endif来结束条件语句。
代码示例
{%,如果 user.is_authenticated %}
<p>欢迎您,{{ user.username }}}!</p>
{%,否则 %}
<p>请登录。</p>
{% endif %}工作原理
user.is_authenticated:- Django 提供的用户对象 (
用户) 返回用户是否通过身份验证。
- Django 提供的用户对象 (
- 根据条件:
- 如果用户已登录:
<p>欢迎您,[用户名]!</p>输出。 - 如果您尚未登录:
<p>请登录。</p>输出。
- 如果用户已登录:
2. {% for ... in ... %} / {% endfor %}
- 重复声明标签通过遍历可迭代对象(如列表或查询集)来动态生成 HTML 内容。
对于标记,指定要重复的对象、结束语结束循环。
代码示例
<ul
{% for item in items %}
{{ item }}
{% endfor %}
工作原理
项目背景从字典传入的列表或查询集。
- 迭代处理
项目中的每个元素项目)到将其插入标签内即可输出。
- 例如
context = {'items':['苹果'、'香蕉'、'樱桃']}如果- 苹果
- 香蕉
- 樱桃
3. {{ ... }}(变量表达式)
- 变量表达式是一个
背景负责输出传递给它的数据。 - 括号 (
{{ }}) 内的变量名,以便在模板中显示其值。
代码示例
<p>欢迎您,{{ user.username }}}!</p>工作原理
user.username背景通过的用户对象的用户名输出属性。
- 例如
user.username = 'withdraw'如果<p>欢迎你,丘尔苏</p>
标签摘要和附加说明
| 标签 | 说明 | 示例 |
|---|---|---|
{%,如果...... %} | 根据条件显示内容 | {%,如果 user.is_authenticated %} |
{%,否则 %} | 不满足条件时执行。 | {%,否则 %} |
{% endif %} | 结束条件语句。 | {% endif %} |
{%,用于......中的... %} | 通过遍历可遍历对象(如列表和查询集)来生成内容。 | {% 项目中的项目 %} ...... {% endfor %} |
{{ ... }} | 作为变量表达式、 背景输出传给它的数据。 | {{ user.username }} |
{%包括 ... %} | 您可以通过插入其他模板文件来重复使用常用元素。 | {% include 'header.html' %} |
{% 扩展 ... %} | 根据另一个模板扩展当前模板。 | {%扩展'base.html' %} |
{%块 ... %} | 定义或覆盖扩展模板的特定部分。 | {% 块内容 %}... {% endblock %} |
Django 模板语言的优势
- 代码与设计分离:分离 HTML 和 Python 代码,使其更易于维护。
- 直观语法语法:提供直观的语法,Python 开发人员可以轻松掌握。
- 创建动态内容数据处理:利用迭代和条件语句灵活处理数据,提供定制内容。
- 可重用性:
包括,延长,区块标签,最大限度地提高模板的可重用性。
使用模板过滤器

Django 模板过滤器使用 修改或转换变量的输出是用于管道 (|)符号应用于变量,并允许对模板中的数据进行简单直观的操作。
示例说明
djangoCopyEdit标题:{{ title|upper }}
内容:{{ content|truncatewords:30 }}
{{ title|upper }}:标题变量中的字符串。 全部大写至- 例如
title = "你好,世界"如果结果是你好,世界是
{{ content|truncatewords:30 }}:内容字串 缩减至最多 30 个字.- 用于概括长文本或限制显示空间。
- 例如
content = "这是一篇字数较多的长文......"如果结果是这是一篇很长的文章,其中...是
使用静态文件

要处理 CSS、JavaScript 和图像等静态文件,请使用 {% 负载静态 %} 标签
{% 负载静态 %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<img src="{% static 'images/logo.png' %}" alt="로고">处理 URL
您可以使用 {% url %} 使用标签:
<a href="/zh/{% url 'home' %}/">首页</a>这样,如果您的 URL 设置发生变化,您就不必修改模板了。
总结
Django 模板的基础知识就介绍到这里,通过模板可以轻松创建动态、灵活的网页。下一步是学习模板继承,它可以帮助您减少代码重复,使网站结构更有条理。
Django 模板起初看似复杂,但只要稍加练习,您就能很快掌握。 继续练习并探索模板的不同功能。祝你好运
作为参考,如果您想查看 Django 核心功能的完整列表、 掌握 Django MTV 模式:模型、视图、模板和表单完全指南 看看这篇文章。







