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 内容。通过合理使用模板变量、模板标签、模板继承和包含以及自定义过滤器,你可以高效地构建复杂而动态的网站。

相关推荐
学嵌入式的小杨同学5 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
EverydayJoy^v^5 小时前
RH134学习进程——十二.运行容器(1)
linux·运维·容器
syseptember5 小时前
Linux网络基础
linux·网络·arm开发
zl_dfq5 小时前
Linux 之 【多线程】(线程的概念、Linux中的线程、页表)
linux
weixin_425543735 小时前
TRAE CN3.3.25 构建的Electron简易DEMO应用
前端·typescript·electron·vite·nestjs
郝亚军6 小时前
如何在Ubuntu和win10/11之间通过samba访问对方的文件
linux·服务器·ubuntu
Mr Xu_6 小时前
【Vue3 + ECharts 实战】正确使用 showLoading、resize 与 dispose 避免内存泄漏
前端·信息可视化·vue·echarts
0思必得06 小时前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化
曦云沐7 小时前
【避坑指南】Ubuntu更新报错“Repository is not signed”的快速修复
linux·ubuntu·docker
雯0609~7 小时前
hiprint:实现项目部署与打印1-官网提供普通html版本
前端·html