模板层

变量查询

使用.进行深度查询(可以查询列表的索引,字典的key以及对象的方法,但是方法不能加括号,所以只能使用没有参数的方法)

views中变量准备:
now = datetime.datetime.now()
emp_list = []
dic = {'name': 'lqz', 'age': 18, 't': [1, 2, [2, 3]]}
emp_str = ''
list2 = [1,2,3,6,5]
list3 = [[1,2,3],[4,5,6],[7,8,9]]
list4 = [[],[4,5,6],[7,8,9]]
tag_str = '<a href="https://www.baidu.com">点我</a>'

过滤器

返回不同格式的日期
{{ now|date:'Y-m-d H:i:s' }}
{{ now|date }}      # 有默认值可以不传参数

如果一个变量是false,使用给定的默认值。否则,使用变量的值。
{{ emp_list|default:'我是空列表' }}
{{ emp_str|default:'我是空字符串' }}

返回值的长度。它对字符串和列表都起作用
{{ 'asdg'|length }}

将值格式化为一个 “人类可读的” 文件尺寸(例如 '13 KB', '4.1 MB'{{ '1024'|filesizeformat }}

切片操作
{{ 'sadgdasfdsa'|slice:'1:4' }}
{{ list2|slice:'1:3' }}

如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾,...会计入进长度
字符数:
{{ 'asgasdfasd'|truncatechars:'8' }}
单词数:...省略号不计入长度
{{ 'i am strong'|truncatewords:'2' }}

safe过滤器,可以使带标签的字符串直接被识别,不然会用&gt;代替>{{ tag_str|safe }}
也可以在Views视图中处理
from django.utils.safestring import mark_safe
tag_str = mark_safe(tag_str)

俩参数可以传字符串和数字
{{ 12|add:3 }}
{{ 'eee'|add:"3rrr" }}

标签

for 和 if 标签,for中的forloop
{% for foo in list3 %}
    {% for i in foo %}
        {% if forloop.first %}
            {{ i|add:'10' }}
            {% elif forloop.last %}
            {{ i|add:'100' }}
            {% else %}
            {{ i }}
        {% endif %}
    {% endfor %}
{% endfor %}
for中的empty
{% for foo in emp_str %}
    {% empty %}
    {{ '空' }}
{% endfor %}
with标签
注意:等号两边不能有空格
{% with aa=dic.name%}
    {{aa}}
{%endwith%}

{% with dic.name as name %}
    {{ name }}
{% endwith %}

自定义过滤器

1 先去setting里面把app名字配置上
2 再app目录下创建一个templatetags模块
3 写py文件(my_test.py4 from django import template
5 register=template.Library()
6 写函数
    @register.filter(name='my_add')
    def my_add(a,b):
        if type(a) == type(b):
            return a+b
        else:
            return str(a)+str(b)

7 模板内:
    {% load my_test %}
    {{'lqz'|my_add:'isbig' }}  #最多只能传两个参数

自定义标签

1 先去setting里面把app名字配置上
2 再app目录下创建一个templatetags模块
3 写py文件(my_test.py4 from django import template
5 register=template.Library()
6 写函数 
    @register.simple_tag(name='factorial')
    def factorial(x):
        if type(x) != int:
            return False
        num = 1
        for i in range(x):
            num *= i+1
        return num
7 模板:
    {% load my_test %}
    {% factorial 5 %}  #以空格做分割,传参数

静态文件导入

方法一:
<link rel="stylesheet" href="/static/mycss.css">

方法二:改static文件的文件名不会受到影响
{% load static %}
<link rel="stylesheet" href="{% static 'mycss.css' %}">
posted @ 2018-09-06 17:29  luck_L  阅读(240)  评论(0编辑  收藏  举报