Django模板语言
2018-03-07 19:10
609 查看
模板语言
{{ }}:变量相关{% %}:逻辑相关使用
变量
{{变量名}}变量名由数字字母和下划线组成
模板中变量与视图中变量一一对应如果传的是一个列表取列表中的参数 {# 取列表中的第一个参数 #} {{ lst.0 }} {# 取字典中的key值 #} {{ d.name }} {# 如果列表中为对象,取到对象的name属性 #} {{ person_list.0.name }} {# 操作只能调用不带参数的方法 #} {{ person_list.0.dream }} # dream为对象的方法
Filters
以下‘|’左右没有空格没有空格没有空格默认值
如果在模板语言中定义了一个变量但是我在后端没有传该变量的值可以对其设置一个默认值
{{ value|default: 'nothing'}}
在模板中取到传来的数据长度
{{ value|length }}
文件长度的显示
{{ value|filesizeformat }}
会根据输入的大小自动改变单位
对模板上的数据进行切片
{{ value|slice:'2: 4' }}[ )
日期的格式化
{{ valuse|date:'Y-m-d H:i:s' }}
关闭Django模板中的自动转义
{{ values|safe }}这样后端传过来一段标签也可以变为正常的HTML语言
文字截断
{{ values|truncatechars:9 }}截断的字符数 汉字没什么区别
{{ values|truncatewords:9 }}单词数,汉字因为没有空格所以没什么区别
自定义filter
自定义filter代码文件的摆放位置在主文件内
app01/ __init__.py models.py templatetags/ __init__.py app01_extras.py views.py
编写自定义filter
!!!记得要在settings中注册app01 from django import template # 导入方法 register = template.Library() @register.filter(name="cut") # 装饰器装饰了以后可以在html中使用 def cut(value, arg 4000 ): return value.replace(arg, "") @register.filter(name="addSB") def add_sb(value): return "{} SB".format(value) 还要在html中{% load 过滤器文件 %}
Tags
for …empty<ul> {% for user in user_list %} <li>{{ user.name }}</li> {% empty %} <li>空空如也</li> {% endfor %} </ul>
for循环可用的一些参数
方法 | 使用 |
---|---|
forloop.counter | 当前循环的索引值(从1开始) |
forloop.counter0 | 当前循环的索引值(从0开始) |
forloop.revcounter | 当前循环的倒序索引值(从1开始) |
forloop.revcounter0 | 当前循环的倒序索引值(从0开始) |
forloop.first | 当前循环是不是第一次循环(布尔值) |
forloop.last | 当前循环是不是最后一次循环(布尔值) |
forloop.parentloop | 本层循环的外层循环 |
在模板语言中取别名
{% with total=business.employees.count %} {{ total }} employee{{ total|pluralize }} {% endwith %}
用于跨站请求的伪造保护
这个标签用于跨站请求伪造保护。
在页面的form表单里面写上{% csrf_token %}
母版的使用
一下是母版<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> {% block page-css %} {% endblock %} </head> <body> <h1>这是母板的标题</h1> {% block page-main %} {% endblock %} <h1>母板底部内容</h1> {% block page-js %} {% endblock %} </body> </html>
注意:我们通常会在母板中定义页面专用的CSS块和JS块,方便子页面替换。
继承母版
在子页面html一开始就写下一下代码{% extend 'parent.html' %} 然后就可以在子文件中使用{% block XXX %}`
在子页面中通过定义母版中的block名来对应替换模板中相应的内容
{% block page-main %} <p>世情薄</p> <p>人情恶</p> <p>雨送黄昏花易落</p> {% endblock %}
组件
可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可
{% include 'navbar.html' %}
静态文件相关
{% load static %} <img src="{% static "images/hi.jpg" %}" alt="Hi!" />
某个文件多处被用到可以存为一个变量
{% load static %} {% static "images/hi.jpg" as myphoto %} <img src="{{ myphoto }}"></img>
使用get_static_prefix
{% load static %} <img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />
{% load static %} {% get_static_prefix as STATIC_PREFIX %} <img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" /> <img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!" />
相关文章推荐
- python web开发——Django模板语言
- 26.Django模板语言和分页
- Django-模板语言和过滤器
- Django实战(二)之模板语言
- Django向Highcharts图表发送数据并用模板语言实现动态显示
- Django模板语言
- Django模板语言(常用语法规则)
- Django 模板语言
- Django 模板语言
- Django模板语言
- Django模板语言小记
- Django之模板语言
- Django学习日记05_模板_模板语言
- Django-模板(模板语言)
- django的模板语言
- 10:django 模板语言
- django学习笔记---模板语言forloop循环
- Django 模板语言:如何重复for loop词典的值
- django学习笔记---模板语言继承和simple_tag
- Django 模板语言