深入理解 Django 模板系统


概要

在任何 Web 开发过程中,渲染和展示数据是不可或缺的一部分。Django 作为一个高效的 Python Web 框架,提供了一个强大且灵活的模板系统。本文将详细介绍 Django 模板系统的核心概念、语法和高级功能。


一、Django 模板系统简介

Django 的模板系统允许开发者使用模板语言来生成动态 HTML 输出。模板包含变量,这些变量会被 Django 替换为实际的值,并且模板也包含标签,这些标签允许逻辑编程比如循环或判断。

二、基本使用

  1. 「创建模板」

假设你有一个名为 myapp 的 Django 应用,可以在该应用下创建一个名为 templates 的文件夹,并在其中创建模板文件,例如 index.html

复制代码
myapp/
├── templates/
│   └── index.html
└── ...
  1. 「编写模板」

index.html 文件中,你可以使用 Django 模板语言来创建动态内容。

复制代码
<html>
<body>
    <h1>Welcome {{ user.username }}</h1>
    <ul>
        {% for item in item_list %}
            <li>{{ item.name }}</li>
        {% endfor %}
    </ul>
</body>
</html>

在这个例子中,{``{ user.username }} 是一个变量,而 {% for item in item_list %} 是一个模板标签用于循环。

  1. 「渲染模板」

在你的 Django 视图中,你可以使用 render 函数来渲染模板。

复制代码
from django.shortcuts import render

def index(request):
    context = {'user': request.user, 'item_list': Item.objects.all()}
    return render(request, 'index.html', context)

三、模板继承

模板继承是 Django 模板系统中最强大的部分之一。

  1. 「基础模板」

创建一个基础模板 base.html,其中包含网站的共同结构和元素。

复制代码
<html>
<head>
    <title>{% block title %}My Website{% endblock %}</title>
</head>
<body>
    <header>
        <!-- 头部内容 -->
    </header>

    <main>
        {% block content %}{% endblock %}
    </main>

    <footer>
        <!-- 脚部内容 -->
    </footer>
</body>
</html>
  1. 「子模板」

在子模板中,你可以通过定义块(blocks)来重写基础模板中的内容。

复制代码
{% extends 'base.html' %}

{% block title %}Welcome Page{% endblock %}

{% block content %}
    <h1>Welcome {{ user.username }}</h1>
    <!-- 更多内容 -->
{% endblock %}

四、模板标签和过滤器

  1. 「标签(Tags)」

标签提供了在模板中插入逻辑的方式。例如 {% if user.is_authenticated %}{% for item in item_list %}

  1. 「过滤器(Filters)」

过滤器用于在变量被显示之前修改它们。例如,{``{ user.username|lower }} 会将用户名转换为小写。

五、自定义标签和过滤器

你也可以创建自己的模板标签和过滤器。

  1. 「创建自定义过滤器」

在你的 Django 应用中创建一个名为 templatetags 的文件夹,并在其中创建一个 Python 文件,例如 my_filters.py

复制代码
from django import template

register = template.Library()

@register.filter(name='cut')
def cut(value, arg):
    return value.replace(arg, '')

使用 {% load my_filters %} 来在模板中使用这个过滤器。

  1. 「创建自定义标签」

类似地,你可以在 templatetags 文件夹中创建自定义标签。

六、小结

Django 模板系统提供了一个非常强大且灵活的方式来创建动态的 HTML 页面。通过理解和掌握其核心概念和高级功能,你可以在 Web 开发中更加高效地工作。

相关推荐
m0_736919101 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手1 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934731 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy1 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖2 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472462 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威3 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ3 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha3 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy3 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法