java中的接口是类吗
382
2022-09-01
Django之模板继承(django模板变量)
需求
详细
在python中的模板继承里面有3个基本概念
顾名思义就是扩展,在哪个html里面扩展呢,就是base.html文件中(这个模板随便你怎么写),这个extends必须写到子html文件的第一行,这行就会把模板中的所有东西都链接过来,而不用人为再写一遍。
{% extends "base.html" %}
block中文名称是块,是哪一块呢?就是top_content这一块,你可以理解相当于是占位符,这个位置我不用,我先占上。以后谁来坐怎么坐,坐上去干什么那是继承这个块的人说了算。
{% block top_content %}{% endblock %}
include的一个使用范例就是,有那么一问块大家都会用到,也可能是重复使用,所以在一个单独的文件里面只写这个块的内容或者框架,想用他的人来了直接include这个html文件即可。
{% include "test4.html" %}
使用的基本逻辑
一个网站肯定有基本框架,比如说头部、左侧栏、中间框架这些都是死的,不用一遍一遍写,改起来太麻烦还容易出错。所以这些固定的部分都可以直接在母模板里面写好,子html直接extends继承就可以用了。
如上面说的基本框架有了,子html文件里面需要写自己的内容,但他已经继承了母模板了,这个内容是放到哪里呢?这里需要在母模板里面用block占上位置,名字自己起来方便使用就行,子html文件中再把这个block重写一遍里面加上自己的内容即可。简单来说就是占位(母模板没有内容),重写(木模板里面已经有内容,在子html中重新写就会覆盖掉木模板内容),详细可以参考示例中的title标签。
最后一个include,运用的最多的就是网页中大量重复的小块,比如底部网站的备案信息,很多网站一个个相同的小块,都可以使用include,而且可以多次重复添加。
注意事项
这里css和js的继承问题,母模板里面导入css文件是标签,在占位css样式的时候,一定要把占位block写到这个下面,否则css文件还没有导入,地下就更使用不了了。js也是同理,必须是先导入,跟js相关的block必须写到它后面,否则将无法正常使用。
示例
{% block title %}bash.html(母模板)
{% extends "base.html" %}{% block title %}
test1(子html)
{% extends 'test1.html' %}{% block title %}
test2(子html)
test4(include示例)
还有app里面的urls文件和views下的各个方法就不在这里展示了,render返回即可。
base.html
test1.html
test2.html,这里test2中又继承了test1.html,然后重写了自己的模板
总结:
Django模板继承还有很多细节没有展示出来,是因为这里做了一个简单的笔记,如在生产中发现细节上的使用问题,还会在这里继续和大家交流。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~