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
标签重写了父模板中的 title
和 content
部分。
以上是一些常见的 Django 模板标签和用法示例。在实际项目中,您可以根据需求和逻辑复杂性,结合这些标签实现更复杂的模板渲染。