Django模版

1. 模板变量的使用

模板变量用于在模板中输出数据。它们被包裹在双大括号 {``{ }} 中。

html 复制代码
<!DOCTYPE html>  
<html>  
<head>  
    <title>{{ title }}</title>  
</head>  
<body>  
    <h1>{{ heading }}</h1>  
    <p>{{ content }}</p>  
</body>  
</html>

2. 模板标签的使用

模板标签用于控制模板的逻辑。它们被包裹在 {% %} 中。

常用模板标签

for 标签:用于遍历一个序列。

html 复制代码
<ul>  
{% for item in item_list %}  
    <li>{{ item }}</li>  
{% endfor %}  
</ul>

3. 模板的继承与包含

模板继承

模板继承允许你创建一个基本的"骨架"模板,该模板包含所有网站共有的元素,然后定义一些可以被子模板覆盖的"块"。

base_generic.html

html 复制代码
<!DOCTYPE html>  
<html>  
<head>  
    <title>{% block title %}My Site{% endblock %}</title>  
</head>  
<body>  
    <h1>My Site</h1>  
    {% block content %}{% endblock %}  
</body>  
</html>

child_template.html

html 复制代码
{% extends "base_generic.html" %}  
  
{% block title %}My Page{% endblock %}  
  
{% block content %}  
    <p>This is my page content.</p>  
{% endblock %}

4. 自定义过滤器

自定义过滤器允许你定义自己的模板过滤器,用于修改模板变量的值。你需要创建一个自定义的模板标签库,并在其中定义过滤器。

步骤

创建一个自定义模板标签库文件 :在 Django 应用的 templatetags 目录中创建一个 Python 文件,例如 custom_filters.py

python 复制代码
# myapp/templatetags/custom_filters.py  
from django import template  
  
register = template.Library()  
  
@register.filter(name='cut')  
def cut(value, arg):  
    """Removes all values of arg from the given string."""  
    return value.replace(arg, '')

在模板中使用自定义过滤器:首先,你需要在模板的顶部加载自定义标签库。

html 复制代码
{% load custom_filters %}  
  
<p>{{ my_string|cut:"world" }}</p>

如果 my_string"Hello world",那么上面的代码将输出 "Hello ".

Django 的模板系统提供了一种灵活而强大的方式来生成动态 HTML 内容。通过合理使用模板变量、模板标签、模板继承和包含以及自定义过滤器,你可以高效地构建复杂而动态的网站。

相关推荐
晓得迷路了3 分钟前
栗子前端技术周刊第 118 期 - Oxfmt Beta、Angular GitHub stars、React 基金会...
前端·javascript·react.js
亿元程序员17 分钟前
小伙伴说我的拼图游戏用Mask不能合批...
前端
恋猫de小郭19 分钟前
AI 正在造就你的「认知卸载」,但是时代如此
前端·人工智能·ai编程
摸鱼的春哥1 小时前
Agent教程14:记忆才是Agent开发的核心
前端·javascript·后端
明月_清风1 小时前
Clipboard API 深度实战:如何同时存入“纯文本”和“富文本”两种格式?
前端·javascript
明月_清风1 小时前
权限陷阱:为什么你的“点击复制”在某些浏览器或 iframe 里会失效?
前端·javascript
深紫色的三北六号8 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
掘金安东尼11 小时前
让 JavaScript 更容易「善后」的新能力
前端·javascript·面试
掘金安东尼11 小时前
用 HTMX 为 React Data Grid 加速实时更新
前端·javascript·面试
SudosuBash12 小时前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)