一、Python的模板:HTML代码 + 模板语法
二、模板语法需掌握以下几个用法
- 传值
- 过滤器
- 标签
- 继承
- 导入模板
三、简要介绍
1. 模板语法之传值
{{ }} # 一般给变量使用相关 {% %} # 一般跟逻辑相关的
模板中使用函数,类,调用方法等,都不要加括号 查询、引用对象方法等,一律使用点语法(句点符)
2. 模板语法之过滤器
# 相当于python的内置函数 语法: {{ 变量|过滤器:参数 }} ''' 竖杠左边的变量当成过滤器的第一个参数,冒号后面的当成第二个参数; 如果冒号后面没有参数了,那就是只有一个参数; 过滤器最多传递两个参数。 ''' # 过滤器有很多个,大概有六七十个,我们需要掌握四五个就行 1. length:返回值的长度。它对字符串和列表都起作用。{{ value|length }} 2. default:如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。{{ value|default:"nothing"}} 3. date:格式化时间。{{ ctime| date:'Y-m-d H-i-s' }} 4. filesizeformat: 将值格式化为一个可读的文件大小。{{ value|filesizeformat }} 5. safe:取消转义。{{ value|safe}} ''' Django的模板中会对HTML标签和JS等语法标签进行自动转义,是保护HTML标签的源文件。 和安全相关的: 1. MySQL中会出现SQL注入的问题 2. 前端中会出现xss攻击 3. django中的form表单中会出现csrf跨站请求问题 ''' '''xss攻击:不让外部的标签直接生效''' # 前端的代码有时候也可以在后端写好,然后传递到前端使用。 from django.utils.safestring import mark_safe s = mark_safe('<h1>xss攻击</h1>')
3. 标签
# 在html中可以使用 if else for循环等 # for 标签 {% for foo in l %} {{ forloop }} <p> {{ foo }} </p> {% endfor %}
# if 标签 {% for foo in l %} {% if forloop.first %} <p> 第一个 </p> {% elif forloop.last %} <p> 最后一个 </p> {% else %} <p> {{ foo }} </p> {% endif %} {% endfor %}
# for循环遍历字典 {% for foo in d.keys %} <p> {{ foo }} </p> {% endfor %} {% for foo in d.values %} <p> {{ foo }} </p> {% endfor %} {% for foo in d.items %} <p> {{ foo }} </p> {% endfor %}
4. 继承
Django模版引擎中最强大也是最复杂的部分就是模版继承。
首先,在父模板中搭建基础模板,并且定义能够被子模版覆盖的 blocks 。blocks标签中的内容,代表这能被子模板覆盖。
其次,在子模板中,使用extends标签,继承父模板。同时,使用block标签重写需要替换的内容。
{% extends 'home.html' %} {% block content %} <h1>登录页面</h1> <form action=""> <p>username: <input type="text" class="form-control"></p> <p>password: <input type="text" class="form-control"></p> <input type="submit" class="btn btn-success btn-block"> </form> {% endblock %}
5. 导入模板
语法:{% include '模版名称' %} 如:{% include 'index.html' %}标签:标签,Django,语法,endfor,过滤器,foo,模板 From: https://www.cnblogs.com/tully/p/16638614.html