django template language入门
2015-03-16 22:11
316 查看
django_template
例如:
Filters
过滤器用来修改变量以输出
过滤器也可以带参数,如:
参数如果包含空格则必须用引号括起来,如以逗号和一个空格的形式将一个list连起来:
default: 如果变量是错误或者空的,将会使用默认值,如:
length: 返回变量的长度,可用于list或者string
filesizeformat: 将数值格式化为字节大小,如'13 KB', '4 MB'等,如
Tags
一些标签包括开始和结束标签,形如
for: 控制循环,访问列表中每个元素,eg:
上面这个for标签可以访问列表中的每个运动员,它包括开始和结束标签
if, elif, else
Template inheritance
这是django模板最强大也是最复杂的部分,允许我们创建一个基础的骨架模板,包含网站的基础元素,然后我们可以定义子模板来进行重载 base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css" />
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
[/code]
一个子模板:
注意:
如果使用extends标签,则它必须是文本中的第一个模板标签
有时候我们想对parent模板中的内容进行一些修改,可以通过
Automatic HTML escaping
有时候用户提交的数据会有无法想象的事情发生,如
如果data的内容是'<b>',则输出:
autoescape默认是on
load标签
一些应用提供一些标签和过滤器的库,如果要在模板中访问他们,首先要保证这个应用是在INSTALLED_APPS的,如'django.contrib.humanize',访问intcomma过滤器
{% load humanize %}
{{ 45000|intcomma }}
[/code]
注意在base.html中load的应用不能直接应用到子模板,在子模板中必须再load一次
The Django template language
template模板是一个简单的文本文件,可以生成文本格式(HTML,XML,CSV) 模板包含变量,这些变量将会被赋值例如:
Variables 像将会用sectioon对象的title属性来替换 如果有不存在的变量,模板会插入TEMPLATE_STRING_IF_INVALID,默认是''空字符串 "bar" :{{ variable }}这种形式的就是变量。当模板引擎看到一个变量,会给它赋值并用赋值的结果来替换它。dot(.)号可以访问变量的属性 如[code] {{ section.title }}
{{ foo.bar }}这种会被表示成字符串而不会使用bar的值去替换
Filters
过滤器用来修改变量以输出
{{ name|lower }}将会将name变量以小写形式输出 过滤去可以串起来用,如
{{ text|excape|linebreaks }}
过滤器也可以带参数,如:
{{ bio|truncatewords:30 }}输出bio变量的前30个字母
参数如果包含空格则必须用引号括起来,如以逗号和一个空格的形式将一个list连起来:
{{ list|join:", " }}
default: 如果变量是错误或者空的,将会使用默认值,如:
{{ value|default:"nothing" }}
length: 返回变量的长度,可用于list或者string
filesizeformat: 将数值格式化为字节大小,如'13 KB', '4 MB'等,如
{{ 123456789|filesizeformat }}输出117.7 MB
Tags
{% tag %}tags比变量稍微复杂,可以生成文本输出,可以控制逻辑和循环,也可以将一些外部信息导入模板以后给变量使用
一些标签包括开始和结束标签,形如
{% tag %} tag content {% endtag %}
for: 控制循环,访问列表中每个元素,eg:
<ul> {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> <% endfor %> </ul>
上面这个for标签可以访问列表中的每个运动员,它包括开始和结束标签
if, elif, else
if标签可以和过滤器还有一些运算符一起使用:内容只有hello{% if athlete_list|length >]Comments [code]{# #}eg: [code]{# greeting #}hello
Template inheritance
这是django模板最强大也是最复杂的部分,允许我们创建一个基础的骨架模板,包含网站的基础元素,然后我们可以定义子模板来进行重载 base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css" />
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
[/code]
一个子模板:
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="style.css" /> <title>My amazing blog</title> </head> <body> <div id="sidebar"> <ul> <li><a href="/">Home</a></li> <li><a href="/blog/">Blog</a></li> </ul> </div> <div id="content"> <h2>Entry one</h2> <p>This is my first entry.</p> <h2>Entry two</h2> <p>This is my second entry.</p> </div> </body> </html>
注意:
如果使用extends标签,则它必须是文本中的第一个模板标签
有时候我们想对parent模板中的内容进行一些修改,可以通过
{{ block.super }}来得到这些内容
Automatic HTML escaping
有时候用户提交的数据会有无法想象的事情发生,如
Hello, {{ name }}看起来只是简单的显示用户名,但是如果用户输入的名字是
<script>alert('hello')</script>则模板会渲染成:
" 这些都是默认转换的,只要使用django的模板系统就行 关闭escape 对于单个变量,可以使用safe过滤器,如: This will be escaped: {{ data }} This will not be escaped: {{ data|safe }} & &
如果data的内容是'<b>',则输出:
{% autoescape off %} Hello {{ name }} {% endautoescape %}
autoescape默认是on
load标签
一些应用提供一些标签和过滤器的库,如果要在模板中访问他们,首先要保证这个应用是在INSTALLED_APPS的,如'django.contrib.humanize',访问intcomma过滤器
{% load humanize %}
{{ 45000|intcomma }}
[/code]
注意在base.html中load的应用不能直接应用到子模板,在子模板中必须再load一次
相关文章推荐
- Django入门:template之过滤器
- django入门笔记4- template
- The Django template language 阅读笔记
- Django------The Django template language
- The Django template language 阅读批注
- Django入门:template之过滤器
- django rest framework 入门4——Authentication & Permissions
- Django入门
- Django 入门笔记5 使用admin 管理
- django: template
- [python网站开发] 一.Django入门知识及创建第一个网站
- 6.Django入门:教程-表单和通用视图
- 在Django中计算出你的项目中的template dir和media dir
- Django入门 - 环境搭建
- django rest framework 入门
- Django入门二之模板语法
- django入门-静态文件-part6
- Django入门笔记【五】
- 自学《Python编程:从入门到实践》 项目3 第18章Django入门 遇到的问题
- django框架-新手入门