您的位置:首页 > 编程语言 > Go语言

Django模板语言

2018-01-20 15:35 821 查看
Django模板语言主要分为两部分:变量和标签,变量主要用来替换后台数据,标签主要来控制模板逻辑。

变量

变量在前端文档中表现为
{{ 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