模板的继承,自定义标签(inclusion_tag)

本文介绍了如何在Django中使用模板的继承来复用不变部分,以及如何通过自定义inclusion_tag解决多个页面共享相同局部模块的问题,以侧边栏为例进行详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模板的继承

当前端一个页面中的某一块内容,是不断变换的 ,但是别的块不变,就可以使用模板的继承。

基本语法:

# 主页面(父页面)
{% block 模板名称 %}

什么都不需要写,具体内容由子页面决定
    
{% endblock %}



# 继承页面(子页面)
{% block 模板名称 %}

...代码块 
    
{% endblock %}


# 注意,这里的模块名称,要一致,在父页面中声明的模块名,子页面要一致

自定义标签(inclusion_tag)

在Django框架中,在同一个项目里,多个前端页面,需要使用相同的模块内容,并且需要相同的参数,可以使用自定义标签inclusion_tag,

主要用来解决,每个html页面中,都需要重写一遍相同局部模块内容的问题

步骤:

        1 在应用下创建一个名字必须叫templatetags文件夹

        2 在该文件夹内创建一个任意名称的py文件

        3 在该py文件内先固定写两行代码

              from django import template

                 from 应用名 import models

                register = template.Library()

        (在这个文件夹中,可以自定义过滤器,自定义标签,自定义inclusion_tag)
1 创建好文件夹,和py文件 ,并写入内容
from django import template
from 应用名 import models

register = template.Library()

# 自定义inlcusion_tag

@register.inclusion_tag('对应局部块的名称(left_menu).html')
def left_menu(username):   # username 由调用的地方传递过来的参数(文章下面的内容有写)
    需要用到的的参数,和需要的操作。
    。。代码块
    return locals()
2 将多个页面都需要使用的局部代码块,单独放在一个html文件中、
<div>
    多个页面都需要使用的局部模块信息(例如,导航栏,侧边栏)
</div>
<div>
    多个页面都需要使用的局部模块信息(例如,导航栏,侧边栏)
</div>
<div>
    多个页面都需要使用的局部模块信息(例如,导航栏,侧边栏)
</div>



#  直接只写代码块就行了,别的不需要
3 在需要inclusion_tag的地方直接调用就好了。
{% load mytag %}  # 声明要调用的方法。 mytag(在templatetags中创建的任意py文件)
{% left_menu username %} # 声明要使用的代码块(left_menu),传入它需要的参数username

内部原理:

        先定义一个方法

        在页面上调用该方法 并且可以传值

        该方法会生成一些数据,然后传递给html页面

        之后将渲染好的结果放到调用的位置

项目实例,Django BBS项目中的侧边栏

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值