该模块实现django的模板引擎,django模板引擎可以使用自身的模板引擎和Jinja2,如果使用Jinja2,需要安装:
pip install Jinja2
当我们创建好django项目后,在settings.py配置文件中有一部分就是对django模板的配置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
# ... some options here ...
},
},
]
django模板语法包括:
- 变量 :
{{bar}}
- 标签 :
{% if xxx %}
- 过滤器:
{{foo|title}}
- 注释 :
{% comment %}
django 模板的组件包括:
- 引擎 :
django.template.Engine
- 模板 :
django.template.Template
- 上下文 :
django.template.Context
- 加载器 : 模板加载器负责定位模板,加载它们,并返回模板对象.
- 上下文处理器 : Context处理器是这样的函数:接收当前的 HttpRequest 作为参数,并返回一个 字典,该字典中包含了将要添加到渲染的context中的数据。
下面我们来分析django 模板模块的具体内容:
- backends : 该模块是django模板的后端实现,分为django默认模板和Jinja2。
- loaders:就是django 模板系统默认加载器。
- init.py :django 模板系统初始化文件。
- base.py :django模板系统基类,我们来看看这些组件是如何工作的。
>>> from django import template
>>> s = '<html>{% if test %}<h1>{{ varvalue }}</h1>{% endif %}</html>'
>>> t = template.Template(s)
(t is now a compiled template, and its render() method can be called multiple
times with multiple contexts)
>>> c = template.Context({'test':True, 'varvalue': 'Hello'})
>>> t.render(c)
'<html><h1>Hello</h1></html>'
>>> c = template.Context({'test':False, 'varvalue': 'Hello'})
>>> t.render(c)
'<html></html>'
- context_processors.py : django模板上下文处理器,一组请求处理器,将字典合并成一个模板上下文。每个函数将请求对象作为唯一的参数。并返回一个字典以添加到上下文中。
- context.py : django模板上下文,携带一个字典内容,来渲染页面。
- defaultfilters.py :django模板过滤器实现。
- defaulttags.py : django 模板默认标签实现。
- engine.py :django模板引擎。
- exceptions.py :django模板异常。
- library.py : django模板用于注册模板标签和过滤器的类。编译过滤器,模板标签函数存储在筛选器和标签属性中。
- loader_tags.py : 标签加载器,包含各种标签节点,例如:块节点(BlockNode)、继承节点(ExtendsNode)、包含节点(IncludeNode)。
- loader.py :加载器,负责定位模板,加载它们,并返回模板对象。
- response.py :django 模板响应类。
- smartif.py : if标签解析工具类。
- utils.py : django 模板工具类。
更多Django教程
学习更多Django教程