导入 Template 和 Context 类
from django.template import Template, Context
def hello_template(request):
html = """
第一个程序
{{content}}
"""
# 1.构建模板结构
template_obj = Template(html)
# 2.创建渲染结构
context_obj = Context({'content': '你好世界!!!'})
# 3. 进行数据渲染
result = template_obj.render(context_obj)
# 4. 返回结果
return HttpResponse(result)
将模板单独放置在文件中
1、模板加载机制
为了从文件系统中加载模板,首先要告诉框架模板的存储位置。这个位置在设置文件中配置,打开 settings.py 文件,找到 TEMPLATES 设置。
BACKEND 的值是指向实现 Django 模板引擎类。内置的后端有 django.template.backends.django.DjangoTemplates和
django.template.backends.jinja2.Jinja2。
因为多数引擎从文件中加载模板,所以各个引擎的顶层配置包含三个通用的设置:
自1.8版本起,不赞成使用,在一个DjangoTemplates引擎中设置’DIRS’选项来代替
与 HTML 和 Python 一样,Django 模板语言支持注释。
单行注释使用 {# #} 标明:
{# This is a comment #}
渲染模板时,不输出注释。使用这种句法编写的注释不能分成多行。这一限制有助于提升模板解析性能。
多行注释:使用 {% comment %} 模板标签,
如下所示:
{% comment %}
This is a
multi-line comment.
{% endcomment %}
注释标签不能嵌套。
在Django的模板语言中,通过使用 过滤器 来改变变量的显示。(注:过滤器是函数)
过滤器的语法: {{ 变量名|过滤器名称:参数 }}
使用管道符"|"来应用过滤器。
例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。
过滤器可以串接,即把一个过滤器的输出传给下一个过滤器。
例如:{{ msg|lower|upper }}
将msg变量内容先转换成小写然后再转换成大写。
default
如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
{{ value|default:“nothing”}}
如果value没有传值或者值为空的话就显示nothing
length
返回值的长度,作用于字符串和列表。
{{ value|length }}
返回value的长度,如 value=[‘a’, ‘b’, ‘c’, ‘d’]的话,就显示4.
slice
切片
格式:{{value|slice:“2:-1”}}
date
日期格式化过滤器
格式:{{ value|date:“Y-m-d H:i:s”}}
可用的参数 例如:a,A,b,B等在此不一一列举
safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
#比如:
value = "点我"
格式:{{ value|safe}}
cut
移除value中所有的与给出的变量相同的字符串
格式:{{ value|cut:’ ’ }},如果value为’i love you’,那么将输出’iloveyou’.
join
使用拼接符连接列表,例如Python的str.join(list)
格式: {{value|join:”_”}}
注意事项:
1.’:'左右没有空格
2.django的模板语言中提供了大约六十个内置过滤器。
定义母版(base.html),在HTML的相同代码部分提取出来写到母版里边,代码:
{% block main %}
{% endblock %
继承母版
{% extends ‘base.html’ %}
{% block main %}
{% endblock %