django第七天(模板的复用性,include标签和母版)

django第7天模板

include标签

模板的共用
a 模板需要到使用到 登陆界面
b 模板需要使用到 登陆界面
可以把登陆界面提取到公共的模板c

为什么要用:
都需要使用相同的界面,减少代码冗余

公共的模板c
html文件
<div class = "login">
详细代码
</div>
css文件
.login{
    具体的css样式
}


然后在 a模板和b模板中加载模板c和其样式
<link rel = 'stylesheet' herf='/static/css/login.css'
{% include 'c模板名' %}

inclusion_tag自定义标签

不是完全相同的模块,因为模块的细节不是完全一致,而是模块有相似的结构

自定义inclusion_tag
首先是tag,故跟自定义tag类似
在app文件夹下新建templatetags包!!!!,
在该文件夹下新建一个tags.py文件
from django.template import Library
register = Library()

@register.inclusion_tag('public_tag.html')#打开哪个页面,将list传给这个页面
def header_list(list):
    return {'list':list}


公共模块
public_tag.html
<ul class="public_tag">
    <!-- 公用页面板块的详细html代码 -->
    {% for foo in list %}
    <li>{{ foo }}</li>
    {% endfor %}
</ul>


模块a
{% load owen_tags %}
{% with [1, 2, 3, 4, 5] as list %}
    {% header_list list %}
{% endwith %}
    
模块b
{% load owen_tags %}
{% with [10, 30, 50] as list %}
    {% header_list list %}
{% endwith %}

母版

前提:多个页面的多个板块相同或相似,只有少部分是自己独有的,将共有的部分全部提出封装,包含了页面大部分结构,所以我们称其母版
    
如何应用:
1.先封装母版:大部分板块相同 相似的base.html,在特定的位置留出对应的block的接口,如果有自身样式,需要留出样式block
2.每个需要运用母版页面的页面来继承母版
{% extends "base/base.html" %}
3.在自身页面中的任意位置书写block中自身独有的页面内容
{% block right %}
<ul>
    <li>hah</li>
    <li>hah</li>
    <li>hah</li>
 </ul>
{% endblock %}
4.如果需要继承母版block中原有的内容
{{block.super}}
    
    
母版
{% block right %}

子模块
#继承母版结构
{% extends "base/base.html" %}
#定义自己的独特部分
{% block right %}
<ul>
    <li>hah</li>
    <li>hah</li>
    <li>hah</li>
 </ul>
{% endblock %}

    
继承母版block中原有的内容
{{block.super}}
    

猜你喜欢

转载自www.cnblogs.com/robert-zhou/p/10478874.html