一、模板变量
我们先看一个例子:
# Create your views here.
from django.http import HttpResponse
from django.shortcuts import redirect,render,reverse
from datetime import datetime
def index (request):
now = datetime.now()
return render(request,'teacher/index.html',context={
'now':now
})
在这个例子中我们向模板文件传递了一个context
的变量,这是Django中的上下文变量,他是一个字典类型,我们将当前时间now()
放在context
中传递给模板,在模板中我们就可以引用这个now()
变量
<p>当前时间是:{{now}}</p>
- 语法:{{ 变量名 }}
变量名可以由字母、数字以及下划线组成,不能以下划线或者数字开头,不能有空格和标点符号
不要使用Python或Django的关键字
我们再看一段下面的例子:
模板变量可以是列表、字典、函数或者对象
def index (request):
now = datetime.now()
lt = [1,2,3,4,5]
dt = {'name':'潭州','location':'长沙'}
def func():
return 'something'
return render(request,'teacher/index.html',context={
'now':now,
'lt':lt,
'dt':dt,
'func':func
})
在模板中这样引用
<td>当前时间是:{{ now }}</td>
<td>这是一个列表{{ lt }</td>
<td>这是列表的第一个元素{{ lt.1 }}</td>
<td>这是一个字典:{{ dt }}</td>
<td>这是字典第一个元素:{{ dt.name }}</td>
<td>这是一个函数:{{ func }}</td>
- 变量解析规则
- 当模板引擎遇到变量时,他会计算该变量,并将其替换成结果。
- 当模板引擎遇到
.
时,他会按照以下顺序查找:字典键值查找>属性或方法查找>数字索引查找。 - 如果结果是一个可调用(callabled),则调用他,结果为模板变量的值。
二、过滤器
过滤器实际上就是一个函数,他能对模板变量进行数据处理
- 作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。
语法:{{fruits|lower}} - 管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,再把第一个字符转换成大写
语法:{{fruits|lower|capfirst}} - 使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数
语法如下: {{fruits|cut:" "}}
内置常用过滤器参考
- add 字符串相加,数字相加,列表相加,如果失败会返回一个空字符串。
- default 提供一个默认值,在这个值被认为是False的时候使用,比如空字符串、None。区别在于default_if_none,这个只有在变量为None的时候才使用默认值。
- first 返回列表第一个值。
- last 返回列表中的最后一个值。
- date 格式化日期和时间。
- time 格式化时间。
- join 跟Python中的join一样的用法。
- length 返回字符串或者是数组的长度。
- length_is 字符串或者是数组的长度是否是指定的值。
- lower 把所有字符串都转换成小写。
- truncatechars 根据后面给的参数截断字符,如果超过了用...表示。
- truncatewords 同truncatechars,这个是以一个单词为单位进行截断,
以上两个有XXX_html类型的,针对html截断标签中的字符,而不会截断标签 - capfirst 首字母大写。
- slice 切割列表,用法跟Python中的切片操作是一样的,区间是前闭合后开发。
- striptags 去掉所有的html标签
- safe 关闭变量的自动转义。
- floatformat 浮点数格式化
date和time过滤器格式
- Y :四位数的年。如: 1999
- y :两位数的年。 如: 99
- m:两位数的月。 如: 01,09
- n:一位数的月。如: 1,9,12
- d:两位数的日。如: 01,09,31
- j:一位数的日。如: 1,9,31
- g:12小时制的一位数的小时。如: 1,9,12
- G:24小时制的一位数小时。如: 0,8,23
- h:12小时制的两位数的小时。如: 01,09,12
- H:24小时制的两位数的小时。如: 01,13,24
- i:分钟。从00-59
- s:秒。从00-59
三、静态文件
1. 路径设置
先在项目根目录下新建一个static
目录,再新建一个APP目录同名的目录,然后再新建CSS、JS、img等目录
settings.py
文件设置
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static','appname')
]
2.静态文件引用
在模板文件头部导入静态文件目录
{% load static %}
然后在模板文件的标签中这样引用静态文件
<img scr="{% static 'appname/img/gb.jpg'%}" alt=''>