模版 a. 模版渲染的过程 b. {{ xx }} # 取单值 - views.py def template(request): return render(request, 'template.html', {'k1': 'v1', 'k2': [1, 2, 3], 'k3': {'name': 'alex'}}) - template.html {{ k1 }} ==>结果:v1 {{ k2.1 }} ==>结果:2 # 列表取值,相当于k2[1] {{ k3.name }} ==>结果:alex # 字典取值 c. {% for item in k2 %} # for循环取值 <p> {{ item }}, {{ forloop.counter }}, # 索引(从1开始) {{ forloop.counter0 }}, # 索引(从0开始) {{ forloop.first }}, # 判断是否是第一个(是则返回True) {{ forloop.last }}, # 判断是否是最后一个(是则返回True) {{ forloop.revcounter }} # 倒序显示 </p> {% endfor %} {% if 1 > 2 %} # if语句,elif和else有则写,没有则不写 <h1>123</h1> {% elif 1 == 2 %} <h1>456</h1> {% else %} <h1>789</h1> {% endif %} d. 模版语言的内置方法 常用帮助方法: {{ item.event_start|date:"Y-m-d H:i:s"}} # 将时间item.event_start转换成"Y-m-d H:i:s"这样的格式 {{ bio|truncatewords:"30" }} # 只显示字符串bio的前30个字符 {{ my_list|first|upper }} # 将字符串my_list的第一个字符变成大写 {{ name|lower }} # 将name的值转换成小写(大写用upper)。例:{{ k1|lower }} e. 自定义方法 两类自定义方法: filter simple_tag filter方法步骤: 1、在APP中创建指定文件夹,名称不能改 templatetags 2、templatetags中创建任意 .py 文件,如:xx.py from django import template from django.utils.safestring import mark_safe register = template.Library() # 这句代码必须不变(一个字都不能变) # 创建函数 @register.filter def f1(value): return value + "666" @register.filter def f2(value,arg): return value + "666" + arg 3、使用1:在html模版的头部执行 {% load xx %} # 导入自定义的xx.py文件 4、使用2: k1 = 'VVV' {{k1}} => vvv {{ k1|f1 }} # 使用自定义的f1方法() {{k1|f2:"alex"}} => vvv666 # 使用自定义的f2方法()。f2需要传入两个参数,除了本身需要的k1外,还需要传入一个参数,格式是f2:"xx" xx是另一个参数 # 自定义方法最多只能传两个参数,要是再多只能自己进行构造了 5、 settings.py 中注册app mysite mysite - settings.py INSTALLED_APPS = [ ... ... 'app01', ] simple_tag方法步骤: 1、在APP中创建指定文件夹,名称不能改 templatetags 2、templatetags中创建任意 .py 文件,如:xx.py from django import template from django.utils.safestring import mark_safe register = template.Library() # 这句代码必须不变(一个字都不能变) # 创建函数 @register.simple_tag def f2(s1, s2, s3, s4): return s1 + s2 + s3 + s4 3、使用1:在html模版的头部执行 {% load xx %} # 导入自定义的xx.py文件 4、使用2: {% f2 1 2 3 4 %} # 使用自定义f2函数,后面跟参数,用空格隔开。f2函数有几个参数就传几个参数 5、 settings.py 中注册app mysite mysite - settings.py INSTALLED_APPS = [ ... ... 'app01', ] 总结: filter 限制:传参个数有限制,最多只能传2个 支持:模版语言的 if 条件 例:f3为自定义filter方法 {% if k1|f3 %} #k1|f3的结果可以作为if的条件 <h1>True</h1> {% else %} <h1>False</h1> {% endif %} simple_tag 不支持:模版语言的 if 条件。 f. 模版的继承 母板: ... ... {% block 名称 %} {% endblock %} ... ... 子板: {% extends '母板html文件名' %} {% block 名称 %} 具体子页面的内容... {% endblock %} g. include 小组件: x.html {% include 'x.html' %} # 引用这些小组件
关注我的公众号,不定期推送资讯
本文来自博客园,作者:链条君,转载请注明原文链接:https://www.cnblogs.com/MacoLee/articles/6253023.html