Django的模板引擎
模板引擎是模板响应的后端
模板引擎的配置
settings.py文件中对模板引擎进行配置 (BACKEND字段)
模板目录在列表中的顺序是搜索模板的顺序
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "msgapp/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',
],
},
},
]
模板的查找
get_template(template_name) -> Template类
在模板目录列表中,依次查找某个模板,直到找到并返回Template类
如果未找到模板,则抛出TemplateDoesNotExist异常
template_name : 待查找模板的名称
select_template(template_name_list) -> Template类
与get_template()相似,依次按照模板列表查找某个模板,直到找到第一个
并返回Template类,未找到则抛出TemplateDoesNotExist异常
· template_name_list : 待查找模板名称列表
模板的渲染
Template.render(context, request) -> HTML字符串
模板对象的.render()方法用于将模板结合内容渲染成HTML字符串
· context : 字典类型,用于加载到模板中的内容
· request : HTTP请求
渲染render()
将模板和内容整合到一起,返回HTML字符串
try:
tpl = get_template("MsgSingleWeb.html")
except:
return HttpResponseNotFound("<h1>自定义的404</h1>")
html = tpl.render({"data":datalist}, request)
return HttpResponse(html)
模板使用步骤
步骤1:指定Template:定义一个Template类
步骤2:进行渲染:通过Context类或字典类
def pgproc(request):
template = Template("<h1>这个程序的名字是 {{ name }}</h1>")
context = Context({"name" : "实验平台"})
return HttpResponse(template.render(context))
Django模板语言入门
模板语言:指导模板加载数据方式的工具
DTL: Django Template Language
参考官网这里
模板语言
• 注释 comment
• 变量 variable
• 标签 tags
• 过滤器 filter
注释
单行注释: {# 这是单行注释 #}
多行注释: {% comment %}
这是多行注释第一行
这是多行注释第二行
{% endcomment %}
• 变量
{{ name }}
如果变量本身是字典类型、列表类型或对象,用.获取元素
{{ adict.key }} {{ alist.0 }}
{{ aobject.attribute }}
• 标签
{% 关键字引导的程序逻辑 %}
标签中的关键字包括
for, endfor, block, endblock, if, elif, else,
endif, in, trans, as, with, extends 等
{% for line in data %}
<tr>
<td>{{ line.time }}</td>
<td align="center">{{ line.userA }}</td>
<td>{{ line.msg }}</td>
</tr>
{% endfor %}
• 过滤器
{{ name|过滤标签 }} {{ name|f1|f1 }}
过滤器对变量的值进行修饰
lower, escape, linebreaks, date, length等
{{ name|lower }}
{{ my_date|date:"Y-m-d" }}