模板可以分为下面几类
- 母版
- 函数 ->>自动执行(这里自动执行是不能给参数的)
- 模板自定义函数:
* simple_filter
这个 simple_filter 就是 html 里面的 {{name|upper}} 中的 upper, 这个内置函数就是一个 simple_filter
自定义 simple_tag
参考: https://docs.djangoproject.com/en/1.10/ref/templates/language/
http://www.cnblogs.com/wupeiqi/articles/5237704.html
1 要在任意的一个 app 下面创建名字必须为 templatetags 的目录, 如下图
2 在这个 templatetags 目录下面创建任意一个名字的 py 文件, 如下图
3, 在模板使用的时候需要导入
4 这个 app 必须要在 setting 里面做了配置, 否则不能使用自定义的
5, 多个参数的传参
给 xxx.py 文件修改, 可以获取多个参数
这个时候如果, 前端引用的时候还是 name|my_upper, 没有给传参数就会报错, 如下
所以我们可以在应用的时候传递第二个参数
{{ name|my_upper:"89989898"}}
这样得到的结果, 后面是有值的, 如下图
filter 这只能传递一个参数, 既 my_upper:"89989898" 中的 my_upper 后面不能有空格, 直接加一个字符串, 要想多个, 就用逗号分隔, 写成多个
my_upper:"89,98,98,98"
这里的 filter, 可以作为 if 判断语句的条件, 而下面的 tag 就是不可以的
tag 方法
模板的语言
- {{ item }}
- {% for item in item_list %} <a>{{ item }}</a> {% endfor %}
- forloop.counter
- forloop.first
- forloop.last
- {% if ordered_warranty %} {% else %} {% endif %}
母板:{% block title %}{% endblock %}
子板:{% extends "base.html" %}
{% block title %}{% endblock %}
帮助方法:
- {{ item.event_start|date:"Y-m-d H:i:s"}}
- {{ bio|truncatewords:"30" }}
- {{ my_list|first|upper }}
- {{ name|lower }}
公共的组件 include 方法
来源: http://www.bubuko.com/infodetail-2508990.html