Django之模板继承(django模板变量)

网友投稿 372 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 %} base.html {% endblock %}

头部
{% block left_content %}{% endblock %}
{% block top_content %}{% endblock %}
{% block content_all %}{% endblock %}
{% include "test4.html" %}
{% block js %}{% endblock %}

bash.html(母模板)

{% extends "base.html" %}{% block title %} test1.html{% endblock %}{% block left_content %}

这里是test1导航栏内容
{% endblock %}{% block top_content %}
这里是test1顶部导航栏内容
{% endblock %}{% block content_all %}
这里是test1全部基本信息
{% endblock %}{% block js %}{% endblock %}

test1(子html)

{% extends 'test1.html' %}{% block title %} test2.html{% endblock %}{% block left_content %}

这里是test2导航栏内容
{% endblock %}{% block top_content %}
这里是test2顶部导航栏内容
{% endblock %}{% block content_all %}
这里是test2全部基本信息
{% endblock %}{% block js %}{% endblock %}

test2(子html)

这里是网站办案信息

test4(include示例)

还有app里面的urls文件和views下的各个方法就不在这里展示了,render返回即可。

base.html

test1.html

test2.html,这里test2中又继承了test1.html,然后重写了自己的模板

总结:

Django模板继承还有很多细节没有展示出来,是因为这里做了一个简单的笔记,如在生产中发现细节上的使用问题,还会在这里继续和大家交流。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:_ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure(ssl:4294957490)
下一篇:一篇文章带你了解Maven的生命周期
相关文章

 发表评论

暂时没有评论,来抢沙发吧~