Django模板语言
2018-01-20 15:35
821 查看
Django模板语言主要分为两部分:变量和标签,变量主要用来替换后台数据,标签主要来控制模板逻辑。
常用过滤器
default
如果一个变量的值为false或者为空,使用给定的默认值。
length
返回变量数据的长度。
filesizeformat
讲变量数据大小格式化成‘可读’的文件尺寸。如:
date
时间格式化
safe
为了安全,django 模板会对HTML标签或js等语进行自动转义。如果我们想要在页面显示html标签或者js代码片段,需要告诉django这段代码是安全的,不必进行转义。即通过safe过滤器。
truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。 参数:截断的字符数。
更多内置过滤器请点击>>>
自定义过滤器请参考>>>
for循环可以使用的一些参数:
for…empty
if…elif…else
if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。
csrf-token
子模板
简单而言就是:在父模板中定义
待续……
变量
变量在前端文档中表现为{{ variable }}的形式,变量名是字母数字下划线的组合,使用
.来取后端传递过来的数据。并遵照字典查询、属性或方法查询、数字索引查询的查询顺序。
如果后端传递过来的是单个数据,前端直接使用{{}}替换。 如果传递是list, 则使用索引取值。 <ul> <li>{{ lst.0 }}</li> <li>{{ lst.1 }}</li> <li>{{ lst.2 }}</li> <li>{{ lst.3 }}</li> </ul> dict: <div>{{ dic.name }} and {{ dic.age }}</div> object: <div>object cat She has a name: {{ cat.name }} and now {{ cat.jumping }} </div> # 即便是对象方法,也是用 .method 取值, 而不是 .method()
过滤器
语法:{{ value|filter_name: 参数}}常用过滤器
default
如果一个变量的值为false或者为空,使用给定的默认值。
{{变量|default:'给定的值'}} #注意前后不要有空格,紧挨着写。
length
返回变量数据的长度。
{{变量|length}}
filesizeformat
讲变量数据大小格式化成‘可读’的文件尺寸。如:
10kb
{{变量|filesizeformat}}
date
时间格式化
{{变量|data:"Y-m-d H:i:s"}}
safe
为了安全,django 模板会对HTML标签或js等语进行自动转义。如果我们想要在页面显示html标签或者js代码片段,需要告诉django这段代码是安全的,不必进行转义。即通过safe过滤器。
{变量|safe}
truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。 参数:截断的字符数。
# ...也占三个字符位。 s = 'abcdefg' {{ s|truncatechars:6}} >>> abc...
更多内置过滤器请点击>>>
自定义过滤器请参考>>>
标签
for<ul> {% for user in userInfo %} <li>{{ user.name }}</li> {% endfor %} </ul>
for循环可以使用的一些参数:
for…empty
<ul> {% for user in userInfo %} <li>{{ user.name }}</li> {% empty %} <li>Null</li> {% endfor %} </ul>
if…elif…else
{% if user_list %} 用户人数:{{ user_list|length }} {% elif black_list %} 黑名单数:{{ black_list|length }} {% else %} 没有用户 {% endif %}
if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。
csrf-token
这个标签用于跨站请求伪造保护。 在页面的form表单里面写上{% csrf_token %}
模板继承
父模板<!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>
子模板
{% extends "base.html" %} # 一定要写在文件顶部 {% block title %}My amazing blog{% endblock %} {% block content %} {% for entry in blog_entries %} <h2>{{ entry.title }}</h2> <p>{{ entry.body }}</p> {% endfor %} {% endblock %}
简单而言就是:在父模板中定义
{% block 名称 % } ...{% endblock %}表示可以被替换的块,在子模板中使用
{% block 名称 % } ...{% endblock %}使用对应的名称进行替换。
待续……
相关文章推荐
- Django 模板语言
- 初入django2 - 模板语言-ORM-ajax
- Django模板语言
- Django模板语言循环字典
- Django模板语言
- Django之模板语言
- Django项目实践2 - Django模板语言(常用语法规则)
- Django-模板(模板语言)
- Django基础之模板语言、中间件和admin
- Django 模板语言
- Django学习笔记1 [路由机制,数据库orm,模板语言]
- Django项目实践2 - Django模板语言(常用语法规则)
- 第三百一十节,Django框架,模板语言
- Django 模板语言: 写给模板作者
- 26.Django模板语言和分页
- Django向Highcharts图表发送数据并用模板语言实现动态显示
- Django 模板语言
- Django 模板语言:如何重复for loop词典的值
- python web开发——Django模板语言
- Django模板语言(常用语法规则)