栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django笔记--模板渲染

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django笔记--模板渲染

1、渲染顺序

当Django模板引擎遇到点,例如:{{ book.name }},会按照下列顺序解析:

I、优先当作字典处理:提取出book字典中‘name’键对应的值 II、book不是字典,那么先当作调用name属性,否则当作调用name()方法 III、如果格式如:book.0、book.1…,则解析为列表,获取book[0]、book[1]… 2、标签

模板使用中,常用的标签有for、if、比较运算符、布尔运算符等。
使用标签的格式:{% 代码段 %}

① for标签
{% for item in 列表 %}:for循环遍历列表。

{{ forloop.counter }}:值为当前是第几次循环,从1开始计算。若要从0开始,则使用**forloop.counter()**。

{% empty %}:遍历的列表为空或不存在时,执行此逻辑。

{% endfor %}:for标签结束标志,使用for标签必须添加此标志,否则报错。

注意:
在HTML文件中,用html格式 注释 模板标签格式,如:

{% for item in booklist %}
{{ item.name }}
{% endfor %}

会造成渲染数据显示缺省,若要注释 模板标签格式,尽量使用模板自己的注释方法。(注释方法见 4、注释)

② if标签

使用逻辑与python的if一致,但是需添加{% endif %}结束

{% if forloop.counter|numfilter %}
{% else %}
{% endif %}

    {% for val in books %}
    {% if forloop.counter|numfilter %}
    
    {% else %}
    
    {% endif %}
        
    {% empty %}
        
    {% endfor %}
编号书名价格
{{val.id}}{{val.name}}{{val.price}}
暂无书籍
3、过滤器

过滤器可以帮助显示修改的变量,通常需要使用管道符号|来应用过滤器,并用于计算、转换等操作,可以使用在变量、标签中。如果过滤器需要参数,则使用冒号:来向过滤器传递参数。

1、语法格式:
         变量|过滤器:参数2
2、自定义过滤器

实际上,过滤器就是Python中定义好的函数,若要自定义过滤器,则需要事先注册,注册后就可以在模板中当作一般过滤器来使用。

2-1 定义步骤

1、在注册好的应用文件下新建templatetags文件夹
2、在创建好的templatetags文件夹中新建一个py文件(如:filters.py)用于编写自定义过滤器

3、在创建的filters.py文件中编写自定义过滤器
需先导入django.template下的Library

from django.template import Library

register = Library()  # 创建Library对象


@register.filter  # register.filter装饰器 装饰过滤器
def numfilter(num):
    # 能被2整除,返回True
    return num % 2 == 0


@register.filter
def strfilter(str,num):
    # 修改字符串显示字数
    # str来自|前的变量,num来自:strfilter:num   infos|strfilter:num
    return str[:num] + '......'
    
2-2 使用自定义过滤器
特别注意:确保重启Django服务后使再用自定义过滤器!

若要在.html文件中使用自定义过滤器,则需使用load标签引入模块,如下:

{% load 创建的py文件名 %}

使用案例:


    {% for val in books %}
    {% if forloop.counter|numfilter %}
    
    {% else %}
    
    {% endif %}
        
    {% empty %}
        
    {% endfor %}
编号书名价格
{{val.id}}{{val.name}}{{val.price}}
暂无书籍
4、注释

单行注释

{# 注释语句 #}:该注释不会显示在浏览器源代码中。

多行注释

{% comment %}
xxxxx:该注释不会显示在浏览器源代码中。
xxxx:该注释不会显示在浏览器源代码中。
{% endcomment %}
5、父模板

使用block标签可以让子模板修改block标签内的内容

1、定义父模板
{% block 此块名称 %}
预留区域,此区域内的内容可根据需要更改
{% endblock 此块名称 %}



    
    {% block btitle %}
    默认标题
    {% endblock btitle %}
    




{% block bbody %}
默认内容
{% endblock bbody %}
京备案号:粤1234561 xxx版权所有
2、使用父模板

在子页面中使用父模板时先继承父模板

{% extends 'FatherPage.html' %}

使用案例:

{% extends 'FatherPage.html' %}

{% block btitle  %}
 测试标题 
{% endblock  %}

{% block bbody %}
啊撒大网的发的噶尔我阿斯顿发放
{% endblock bbody %}
6、标点符号转义

过滤器escape可以实现对变量的HTML转义(默认模板就会转义,一般可省略不写)

{{ 变量|escape }}

若要禁用转义

{{ 变量|safe }}

设置一段代码禁用转义,可以使用autoescape标签,该标签接受 on、off参数

{% autoescape off %}   #  off 或 on
代码段
{% endautoescape %}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号