Django 模板基础:新手完全指南

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

什么是 Django 模板?

Django Templates 기초 참고 이미지1

Django 模板使用 动态生成 HTML 网页的工具在 Django 框架中,网页的 代表性(视图) 页面的一部分。模板不仅仅是 HTML 文档,它还结合了从数据库或动态数据中提取的信息,为用户提供个性化内容。这样就可以 前台和后台之间的联系 作用,并极大地促进了可重用性和可维护性。

主要特点

  1. 动态数据表示法
    • 您可以使用模板语言在 HTML 页面中表示 Python 数据(字符串、列表、对象等)。
    • 示例在页面上显示从数据库中提取的用户名或产品列表。
  2. 模板语言
    • Django 有自己的 模板标记和过滤器以提供
    • 您可以在 HTML 中加入基本的编程结构,如条件语句、循环等。
    • 例如 {%,如果 user.is_authenticated %} <p>欢迎您,{{ user.username }}}!</p> {%,否则 %} <p>请登录。</p> {% endif %}
  3. 可重复使用的组件
    • 模板是一个 包括延长以在多个页面中重复使用通用元素(如页眉和页脚)。
    • 举例说明:创建所有页面通用的基本布局模板。
  4. 客户端-服务器协作
    • 服务器准备数据,使用模板生成最终的 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>

使用模板标记

Template 태그 사용하기 설명 이미지

为了将 HTML 与动态数据相结合,Django 模板语言使用了 模板标签变量表达式的标签。我们将逐一解释各种标签。

{% if ... %} / {% else %} / {% endif %} 1.

  • 条件语句标记可让您根据特定条件对 HTML 内容进行分支。
  • 如果 标记,并在标记内写入条件表达式、 不然是在不满足条件时执行的部分。
  • endif来结束条件语句。

代码示例

{%,如果 user.is_authenticated %}
    <p>欢迎您,{{ user.username }}}!</p>
{%,否则 %}
    <p>请登录。</p>
{% endif %}

工作原理

  • user.is_authenticated:
    • 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 模板语言的优势

    1. 代码与设计分离:分离 HTML 和 Python 代码,使其更易于维护。
    2. 直观语法语法:提供直观的语法,Python 开发人员可以轻松掌握。
    3. 创建动态内容数据处理:利用迭代和条件语句灵活处理数据,提供定制内容。
    4. 可重用性: 包括, 延长, 区块 标签,最大限度地提高模板的可重用性。

    使用模板过滤器

    Template 필터 사용하기 설명 이미지

    Django 模板过滤器使用 修改或转换变量的输出是用于管道 (|)符号应用于变量,并允许对模板中的数据进行简单直观的操作。

    示例说明

    djangoCopyEdit

    标题:{{ title|upper }}


    内容:{{ content|truncatewords:30 }}

    1. {{ title|upper }}:
      • 标题 变量中的字符串。 全部大写
      • 例如 title = "你好,世界"如果结果是 你好,世界
    2. {{ 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 模式:模型、视图、模板和表单完全指南 看看这篇文章。

    테리 이모티콘
    (快乐编码)

    类似文章