Django 模板系统:配置、继承与安全处理
模板文件工作流程
模板引擎主要参与模板渲染的系统。 内容源:输入的数据流,常见的有数据库、XML 文件和用户请求这样的网络数据。 模板:一般是和语言相关的文本。
工作流程涉及模板引擎根据上下文对模板中的变量进行替换,并根据操作标签来执行操作,输出文本。
作为一个 Web 框架,Django 自带了一套模板系统动态生成 HTML 文本。模板主要包含两个部分:HTML 的静态部分和描述如何插入动态内容的特殊语法。
模板系统的相关配置
模板的配置在 settings.py 当中实现。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['/var/www/html/site.com', '/var/www/html/default'],
},
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': '/var/www/html/another_app'
}
]
TEMPLATES 变量是一个列表,包含多个字典,每个字典定义了一组模板配置。这些配置告诉 Django 如何渲染模板。
TEMPLATES = [...]:定义了一个名为TEMPLATES的列表,其中包含多个模板配置。- 第一个字典配置:
'BACKEND': 'django.template.backends.django.DjangoTemplates':指定使用 Django 自带的模板引擎。这是 Django 默认的模板引擎,它基于 Python 编写。'DIRS': [...]:定义了一个目录列表,Django 会在这些目录中查找模板文件。
- 第二个字典配置:
'BACKEND': 'django.template.backends.jinja2.Jinja2':指定使用 Jinja2 模板引擎。Jinja2 是一个流行的 Python 模板引擎,它支持更复杂的模板语法和功能。'DIRS': '/var/www/html/another_app':定义了一个单一的目录,Django 会在该目录中查找 Jinja2 模板文件。
通过这种配置,Django 项目可以同时使用 Django 自带的模板引擎和 Jinja2 模板引擎,从而提供更大的灵活性和选择。
模板语言
模板引擎可以识别模板中的特殊结构,以动态生成文本。主要的特殊结构有变量和标签。
Django 的模板语言当中包含了四种结构:变量、标签、过滤器和注释。
1. 变量(Variables)
变量用于在模板中显示来自视图(view)传递的数据。变量通常以双大括号 {{ }} 包裹。例如:
<p>Hello, {{ name }}!</p>
如果 name 的值是 "Alice",那么模板渲染后会显示:
<>Hello, Alice!


