Django模板

模板和模板引擎:

  • 模板具有一定的格式或股价,可以动态的生成HTML
  • 模板引擎决定以何种方式组织代码
  • 一个项目可以有一个或者多个模板引擎(django模板支持DTL和Jinja2模板引擎)

一,章节大概介绍:

1.模板引擎的相关配置,理解模板加载顺序

2.模板变量的使用

3.模板标签的使用

5.模板的继承与包含

6.模板过滤器

7.自定义过滤器

8.掌握DTL与Jinja2的使用区别

二,模板引擎介绍和选择

1.模板和模板引擎:

  • 模板具有一定的格式或框架,能够动态地生成HTML
  • 模板引擎决定以何种方式组织代码
  • 一个项目里可以有一个或多个模板引擎  
  • 模板就是具有特定内容的HTML文件
  • 模板引擎就是将模板中的特定内容替换成Python变量

2,没有模板引擎怎样在浏览器显示HTML

  1. 从磁盘读取html字符串
  2. 将满足特定规则的内容进行替换
  3. 发给浏览器展示 

 3,有模板引擎后的渲染机制

  1. 从磁盘读取模板文件(get_template)
  2. 选择合适的模板引擎(select_template)
  3. 将特定的内容对模板进行渲染(render)
  4. 发送给浏览器进行显示

4,为什么要使用模板引擎

  • 增加代码的可阅读性
  • 提升代码的可维护性
  • 增加代码的可扩展性

三,Django模板引擎的相关配置

本节内容:掌握settings.py中模板相关的配置;了解多个模板引擎支持情况下配置;掌握模板的加载顺序

1,templates相关配置

 

 2,同时支持两种模板引擎时

小结:模板查找的顺序:按顺序查找,先根目录后模块目录 

三,模板变量的使用 

本节内容:掌握模板语法;掌握Python中简单数据类型的渲染;掌握Python中复杂数据类型的渲染;掌握DTL与Jinja2的使用区别

1.掌握模板语法

  • {{ variable }}
  • 当模板引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身
  • 变量名称中不能有空格,标点名称,不能以下划线开头

2.掌握Python中简单数据类型的渲染

3.掌握Python中复杂数据类型的渲染

1,渲染Python中的对象

  • 语法:{{ object.attribute }}
  • dict类型数据的渲染
  • list/tuple类型数据的渲染
  • list/tuple嵌套dict复杂类型数据的渲染

4.掌握DTD与Jinja2使用区别  

  • DTL列表不能有空格或者标点符号,而Jinja2可以(下图示范不被允许)

四,模板标签的使用 

本节内容:了解模板标签的作用;掌握常用的模板标签;掌握DTL与Jinja2的使用区别

在了解模板标签之前,我们先思考这样一件事:使用变量时有哪些不方便的地方?

  • list/tuple如果没有循环标签,肯定很难办
  • 如果能加上if等条件判断就好了
  • 页面较多,如果能共用部分页面就好了

1. 模板标签的使用:语法:{% tag %}

2.常用的模板标签(循环控制,条件控制,模板注释,URL解析;with语句块,当前时间显示,继承与包含)

循环控制:

    语法参考:

{% for item in list_item %}
<li>内容</li>
{% empty %}
<li>暂无内容</li>
{% endfor %}

循环内的变量forloop

    for循环dict:

{% for key,value in data.item %}
   {{ key }} : {{ value }}
{% endfor %}

 重复循环:

{% cycle 'row1' 'row2' %}

 与Jinja2的使用区别:

3.条件控制

{% if condition_a %}
    满足了A条件
{% elif condition_b %}
    满足了B条件
{% else %}
    都不满足
{% endif %}

 

4.模板注释 

5.URL解析

与Jinja2的使用区别 

 五,模板的继承与包含

使用场景:

        每个页面都引用了公共的头部,js,css

        有几个页面使用了公共的头部

1.了解模板抽象和继承的使用区别

步骤一:将可变的部分圈出来(base.html)

{% block sidebar %}
   <!-- 菜单栏里的内容 -->
{% endblock %}

步骤二:继承父模板

{% extends "base.html" %}

步骤三:填充一些新的内容

对于其余的情况,有时候有些公用的模板,我们可以在模板中添加公共部分

步骤一:将 可变的部分拆出来(footer.html)

<footer>
这是页脚公共的部分
</footer>

步骤二:将拆出来的部分包进来(index.html)

{% extends "base.html" %}
{% block content %}
    <!-- 页面主要内容区域 -->

    {# 公用的footer #}
    {% include "footer.html" %}
{% endblock %}

六,模板过滤器

 本节内容:了解过滤器的作用;掌握过滤器的使用;掌握Django中常用的过滤器;掌握DTL与Jinja2的使用区别

1,什么是过滤器:对变量进行特殊处理后再渲染

  • 过滤器语法 {{ value|filter_name:params }}
  • 实例:使用过滤器将字母大写 {{ value|upper }}

2, 内置的过滤器

  • 默认值显示 {{ value|default:"" }}  {{ value|default_if_none:"无" }}
  • 数字四舍五入显示 {{ value|floatformat:3 }}
  • 日期对象格式化 {{ value|date:"D d M Y" }}
  • 时间对象格式化 {{ value|time:"H:i" }}
  • 富文本内容的转义显示 {{ value|safe }}
  • 字符串截取 {{ value|truncatechars:9 }} {{ value|truncatechars_html:9 }} {{ value|truncatwords:2 }}

七,自定义过滤器

  1. 再app模块目录下新建包templatetags

 

 2. 实现过滤器poll_extras.py

  3.注册过滤器

  4.在模板中使用过滤器

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值