R / Richie全部文章 ↑

Python · 1 分钟阅读

模板系统基础

Django 模板系统(DTL)负责把数据塞进 HTML 字符串,并提供标签、过滤器、继承等能力。

渲染三步

from django.template import Template, Context

tpl = Template("Hello {{ name }}!")
ctx = Context({"name": "Django"})
tpl.render(ctx)   # "Hello Django!"

实际开发中,99% 的场景使用 render() 快捷方式。

settings.TEMPLATES

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [BASE_DIR / "templates"],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]
选项 含义
BACKEND 模板引擎(DTL / Jinja2)
DIRS 共享模板目录
APP_DIRS 是否在每个 App 的 templates/ 中查找
context_processors 自动注入模板上下文的可调用对象

推荐 DTL:与 Django 集成最完整,安全策略(自动转义)开箱即用。