Django笔记04

模板层

{{}}  变量相关

{%%}   逻辑相关

  前端获取容器类型的数据统一使用句点符(.)

模板传递值的方式

# 以字典的方式传值
return
render(request,'index.html',{'name':'jason','age0':'18'})
# 将所有变量都传到前台,弊端是前端不需要的也会传到前台
return render(request,'index.html',locals())

过滤器

语法
  {{ obj|filter_name:param }}  变量名|过滤器名称:变量
default
  如果一个变量是false或者为空,指定默认值
  {{ value|default:"nothing" }}
length
  返回值的长度
  {{ value|length }}
filesizeformat
  将值格式化为一个以B,KB为单位的字符串
  {{ value|filesizeformat }}
date
  格式化当前时间
  {{ value|date:"Y-m-d" }}
slice
  切片
  {{ value|slice:"2:-1" }}
truncatechars
  超过指定数量以...显示
  {{ value|truncatechars }}
safe
  取消转义
  {{ value|safe }}
  后端实现
  from django.utils.safestring import mark_safe
  ss = mark_safe("<h1>我是h1</h1>")

标签

for标签:遍历每一个元素
{% for person in person_list %}
  <p>{{ person.name }}</p>
{% endfor %}
可以通过{{ forloop }}来获取循环序号
{% empty %}当被循环的对象为空时执行empty后的语句

if标签
与后端逻辑相同

with标签
  当一个名字太过复杂可以取别名
  {% with 名字 as 别名 %}
  {% endwith %}

自定义标签,过滤器,inclusion_tag

都必须做的事
  1 必须在app下新建一个名为templatetags的文件夹
  2 在文件夹下创建任意名称的py文件
  3 在文件内写下面两句话
    from django import template
    resgiter = template.Library()
  4 在html文件中使用时需要加载:{% load 文件名 %}

过滤器
  使用的装饰器:@register.filter()
  使用方式与过滤器相同

标签
  使用的过滤器:@register.simpl_tag()
  使用的方式与标签相同

inclusion_tag
  调用能够返回一段html代码
  使用的装饰器:@inclusion_tag("存放html代码的文件")
  使用方式:{% 函数名 参数 %}

模板的继承

  写一个模板,留出扩展的区域,可以留多个区域,区域留的越多可扩展性就越高

  {% extends 模板文件 %}

  {% block 名字 %}

  {% endblock %}

  在子模板中使用原模板内的内容:{{ block.super }}

模板的导入

  写一个组件,可以被重复使用

  {% include "模板文件" %}

原文地址:https://www.cnblogs.com/LinChengcheng/p/10717465.html