Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/django-template.html

django 模板 template 详解(配置template,常用模板标签等讲解)


Django 模板(Template)是用于在 Web 应用程序中呈现数据的文件,它允许开发者将动态数据嵌入到静态 HTML 中。

模板文件存放位置

Django 模板文件默认存放在应用的"templates"目录下。通常,每个 Django 应用都有一个独立的 templates 目录,其中包含该应用的所有模板文件。

在 Django 项目的目录结构中,模板文件应该位于以下位置:

project_name/
├── manage.py
├── project_name/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── app_name/
    ├── migrations/
    ├── templates/
    │   └── app_name/  # 这里存放该应用的模板文件
    └── ...

配置模板

要使用 Django 模板功能,您需要在项目的 settings.py 文件中进行一些配置。找到 TEMPLATES 设置,确保它具有以下配置:

# settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'app_name', 'templates')], # 根据实际项目结构配置
        'APP_DIRS': True,
        'OPTIONS': {
            # 其他选项...
        },
    },
]

上述配置中,DIRS 指定了模板文件所在的目录。在这个例子中,我们假设模板文件位于 app_name 应用的 templates 目录下。APP_DIRS 设置为 True,允许 Django 查找每个应用的 templates 目录。

模板标签讲解及实战使用

Django 模板中包含丰富的模板标签,用于在模板中进行逻辑控制和动态数据渲染。以下是一些常用的模板标签:

变量输出

在模板中,使用双花括号 {{ }} 来输出变量的值:

<!-- 模板中输出变量 -->
<h1>{{ title }}</h1>
<p>{{ content }}</p>

for 循环

使用 for 标签在模板中进行循环:

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

if 语句

使用 if 标签进行条件判断:

{% if user.is_authenticated %}
  <p>Welcome, {{ user.username }}!</p>
{% else %}
  <p>Please log in to continue.</p>
{% endif %}

静态文件引用

使用 static 标签来引用静态文件,如 CSS 和 JavaScript:

{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<script src="{% static 'js/script.js' %}"></script>

继承和占位符

通过 block 标签实现模板的继承和重写:

base.html(父模板):

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

child.html(子模板):

{% extends "base.html" %}

{% block title %}Custom Title{% endblock %}

{% block content %}
  <h1>Hello, World!</h1>
{% endblock %}

子模板继承了父模板,并使用 block 标签重写了父模板中的 titlecontent 部分。

以上是一些常见的 Django 模板标签和用法示例。在实际项目中,您可以根据需求和逻辑复杂性,结合这些标签实现更复杂的模板渲染。