dtl模板语言,自定义filter和tag

1,变量在视图函数中通过 return render(request,‘.html’,{'num':num})传入   可以直接引入local()

在前端通过.与法进行访问  可以将全部类型传入,包括函数返回值,类的__str__,函数不带参数

2.dtl模板语言的filter和tag:

常用的filter      |add:2  |default:0  |data:'Y-m-d'    <a>{{ name|truncatechars:0 }}</a>      <a>{{ dict1.usr|slice:'0:1'}}</a>  -- 注:过滤器可以串联操作,可以拥有0个或1个参数

-- 增加 add:num
-- 字符串长度 length
-- 默认值 default:'默认值' # 变量不存在或为空
-- 全大写 upper
-- 全小写 lower
-- 切片 slice:'0:-1'
-- 将数字转换为文件大小 filesizeformat
-- 字符串隐藏 truncatechars:13 # 只显示10个字符,后置字符都用...来替代
-- 时间 date:'Y-m-d'
-- 转换原意 safe

tag   可用于反向解析   用于{%now:'Y-m-d'  'h-i-s'%}     起别名{% with ‘hshs' as nu’%}   {%end   with%}  -- Django CSRF认证   {% csrf_token %}

if 和 for  用法

 

`python
'''
语法:
{% if 条件1 %}
结论1
{% elif 条件2 %}
结论2
{% else %}
结论n
{% endif %}

注:
1. if的条件可以添加filter
2. 可以嵌套
'''
```

## 七、迭代器

```python
'''
{% for foo in iterate %}
{{ forloop }}
{% empty %}
可迭代对象为空
{% endfor %}

注:
1. iterate为可迭代对象
2. iterate可以添加filter
3. forloop变量为存放迭代信息的字典,父级forloop字典,开始索引从0编号或1编号,倒序索引从0编号或1编号,是否是第一次或最后一次循环
4. empty分支会在可迭代对象不存在或空时执行

## 八、自定义过滤器与标签

```python
'''
步骤:
1. 在注册的app下创建templatetags包
2. 在模板中自定义模块py文件,如:owen_tags.py
3. 要在使用自定义filter与tag的模板页面中加载自定义模块py文件,案例:{% load owen_tags %}

4. 自定义filter语法
from django.template import Library
register = Library()
@register.filter(name='jump')
def owen_jump(value, arg):
try:
return value * int(arg)
except (ValueError, TypeError):
return ''

5. 自定义tag语法
@register.simple_tag(name='add_two')
def owen_add(arg1, arg2):
try:
return int(arg1) + int(arg2)
except (ValueError, TypeError):
try:
return arg1 + arg2
except Exception:
return ''

posted on 2017-03-01 16:35  paulgeo  阅读(205)  评论(0编辑  收藏  举报