django之模板继承怎么保持菜单展开,django之模板继承后能有原模板的内容吗
学习python的时候,一提到继承就能想到类,能想到繁琐,重复,不容易出错。这个模板继承就是为了解决这个问题。至少一个网站的基本框架不变,页眉、左导航栏或右导航栏、底部的语句不变。所以这些重复的内容都需要继承不同的模板,这样才能解决重复的代码。
python中详细的模板继承有三个基本概念。
顾名思义,就是延伸的意思。你在哪个html中扩展?也就是说,在base.html文件中(您可以随意编写这个模板)。这个扩展必须写在html文件的第一行,它将链接模板中的所有内容,而不是手动重新编写。
{ % extends base . html % } block的中文名字是block,是哪个?是top_content块。你可以理解为相当于一个占位符。我不需要这个职位。我先占领它。以后谁坐,怎么坐,坐的时候做什么?这取决于继承这个街区的人。
使用{ % block top _ content % } { % end block % } include的一个例子是,有一个每个人都会使用的块,或者它可能会被重用。所以只把这个块的内容或者框架写在一个单独的文件里,想用的人可以直接包含这个html文件。
{% include test4.html %}使用的基本逻辑
一个网站必须要有一个基本的框架,比如头部、左侧栏、中间框架,这些都是死的。你不必一遍又一遍地写它们。改起来太麻烦,容易出错。所以这些固定的部分可以直接写在主模板里,子html可以直接被extends继承。
如上所述,有了基本框架,子html文件需要编写自己的内容,但它已经继承了父模板。这个内容放在哪里?这里需要使用block在主模板中占据上位,自己命名并使其易于使用即可,并在子html文件中重写这个block并添加自己的内容。简单来说就是占用(父模板没有内容)和重写(木模板中已经有内容,在子html中重写会覆盖木模板的内容)。详情请参考示例中的title标签。
最后一个包含,用的最多的,就是网页中大量重复的小块,比如底层网站的记录信息。很多网站都有一个个相同的小块,可以重复收录和添加。
需要注意的事项
下面是css和js的继承。导入到主模板中的css文件是linkrel= stylesheet href=./static/login.css 标记。在占用css样式的时候,一定要把占位符块写在这个下面,否则css文件不会导入,也不会在地下使用。js也是一样,必须是scriptsrc=./static/jquery-1 . 12 . 4 . js /脚本先导入,js相关的块必须写在后面,否则不能正常工作。
例子
!声明文档类型
html lang=en
头
meta charset=UTF-8
{% block title %}
标题base.html/标题
{% endblock %}
link rel=样式表 href=./static/login.css
风格。标题{
背景色:# 4c6bb2
高度:48px
行高:48px
左填充:150px
}
/风格
/头
身体
差异
主管/部门
差异
{ % block left _ content % } { % end block % }
/div
差异
div { % block top _ content % } { % end block % }/div
div { % block content _ all % } { % end block % }/div
{% include test4.html %}
/div
/div
脚本src=./static/jquery-1 . 12 . 4 . js /脚本
{% block js %}{% endblock %}
/body
/htmlbash.html(主模板)
{% extends base.html %}
{% block title %}
标题test1.html/标题
{% endblock %}
{% block left_content %}
下面是test1导航栏/div的内容。
{% endblock %}
{% block top_content %}
下面是test1 /div顶部导航栏的内容。
{% endblock %}
{% block content_all %}
这里是test1 /div的所有基本信息。
{% endblock %}
{% block js %}
脚本
$(function (){
警报(“测试1 html”)
})
/脚本
{% endblock %}test1(子html)
{% extends test1.html %}
{% block title %}
标题test2.html/标题
{% endblock %}
{% block left_content %}
下面是test2导航栏/div的内容
{% endblock %}
{% block top_content %}
下面是test2 /div顶部导航栏的内容。
{% endblock %}
{% block content_all %}
这里是test2 /div的所有基本信息。
{% endblock %}
{% block js %}
脚本
$(function (){
警报(“测试2 html”)
})
/脚本
{% endblock %}test2(子html)
差异
这里是网站办案信息。
/div test4(包括示例)
app里有urls文件,视图下有各种方法,这里不做展示。渲染可以返回。
base.html
test1.html
Test2.html,在test2中继承了test1.html的地方,重写了自己的模板。
总结:
Django模板继承还有很多细节没有展示,因为这里做了简单的说明,比如制作中发现的细节的使用,我们会在这里继续和大家交流。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。