Django模板语言(Django Template Language, DTL)是Django框架用于动态生成HTML页面的一种模板语言。它提供了强大的模板功能,如变量替换、过滤器、标签等,能够将后端数据渲染到前端页面。
以下是Django模板语法的简略教程:
1. 创建和渲染模板
创建模板文件
在Django项目的 templates
目录中创建HTML文件,例如 index.html
:
<!DOCTYPE html>
<html>
<head>
<title>My Site</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
渲染模板
在视图函数中使用 render
方法渲染模板并传递上下文数据:
from django.shortcuts import render
def index(request):
context = {'name': 'World'}
return render(request, 'index.html', context)
2. 变量
在模板中使用双大括号 {{ }}
来输出变量的值:
<p>{{ variable_name }}</p>
例如:
<p>Hello, {{ name }}!</p>
3. 过滤器
过滤器用于修改变量的显示方式,语法是 {{ variable|filter }}
:
<p>{{ name|lower }}</p>
<p>{{ name|length }}</p>
常用过滤器:
lower
: 转换为小写upper
: 转换为大写length
: 返回长度default
: 如果变量为空,则返回默认值
4. 标签
标签用于控制模板逻辑,语法是 {% tag %}
:
条件语句
使用 if
标签进行条件判断:
{% if user.is_authenticated %}
<p>Welcome back, {{ user.username }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
循环语句
使用 for
标签进行循环:
<ul>
{% for item in item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
模板继承
模板继承用于创建基模板和子模板,提高代码复用性。
基模板定义了HTML文档的基本结构,并使用 {% block %}
标签来创建可覆盖的内容区域。子模板通过 {% extends %}
标签继承基模板,并使用 {% block %}
标签来覆盖基模板中的内容区域。
基模板 base.html
:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
子模板 index.html
:
{% extends "base.html" %}
{% block title %}Home Page{% endblock %}
{% block content %}
<h1>Welcome to the Home Page</h1>
{% endblock %}
5. 加载静态文件和URL
静态文件
使用 static
标签加载静态文件(如CSS、JS、图片):
{% load static %}
<img src="{% static 'images/logo.png' %}" alt="Logo">
动态URL
使用 url
标签生成动态URL:
<a href="{% url 'index' %}">Home</a>
假设你在 urls.py
中定义了一个名为 index
的URL模式:(通过参数name确定url)
from django.urls import path
from app01 import views
urlpatterns = [
path('index/', views.index, name='index'),
]
6. 模板注释
使用 {# #}
进行注释,注释内容不会在渲染的HTML中显示:
{# This is a comment #}
这是一个简单的Django模板语法教程,涵盖了变量、过滤器、标签、模板继承、静态文件和动态URL等基本内容。Django模板语言功能强大,适用于各种复杂的模板需求。