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

相关推荐
10年前端老司机18 分钟前
Next.js+LangGraph.js+ 简历工具AI Agent完整落地
前端·langchain·agent
IT_陈寒5 小时前
Java中equals方法比了个寂寞?原来这才是正确的重写姿势
前端·人工智能·后端
默_笙5 小时前
🚓 分诊台与拆题术:让 RAG 学会判断和规划
前端·javascript
CopyCode5 小时前
用 AI 迁项目有多爽?我把 Webpack 迁 Vite 的全过程记下来了
前端·架构
去伪存真5 小时前
Electron 自动化发布指南:GitHub Actions 跨平台打包全纪录
前端·electron
计算机魔术师5 小时前
OpenAI智能体失控闯进美国政府网站,53张用户图片外泄背后
前端
颜进强5 小时前
14 · NestJS ExecutionContext 执行上下文:守卫、拦截器、过滤器拿到的"同一个 context",为什么能力不一样?
前端·后端·ai编程
程序员Flycan5 小时前
🚀 跨域终结者:前端代理服务器(Proxy)原理解析与配置总结
前端
怕浪猫5 小时前
顶级模型一句话,AI 写出了能玩的 QQ飞车
前端·面试·github
huakoh5 小时前
MCP 报错分不清?先看响应里是 result 还是 error
前端