千家信息网

Django模板继承和静态资源如何使用

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇"Django模板继承和静态资源如何使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看
千家信息网最后更新 2024年11月14日Django模板继承和静态资源如何使用

这篇"Django模板继承和静态资源如何使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Django模板继承和静态资源如何使用"文章吧。

  1、模板继承

  对于一个网站来说,会存在很多的html文件,但是由于一些页面中会有相同的页面结构出现。也就导致了多个html文件中代码是重复的,所以为了在html中减少重复的代码的出现,简化html结构,可以将多个页面中相同的html代码,单独的抽离出来放在一个html文件中,其他的html文件如果想要使用这部分内容,直接继承过去就可以了,有点类似于类的继承关系。

  继承关系:父模板和子模板。

  2、假设现在有一个网站,它的首页、列表页和详情页这些页面,页面顶部的导航条和页面底部的工具条是一样的,唯一变化的就是其中内容。画了一个简陋的图,大致如下图所示:

  对于这个网站,其页面结构%70(浮夸风()?""")以上的内容都是相似的,如果我们每一个html文件都写入这些相同部分的代码,也是可以的,只是会造成代码的冗余等。为了方便解决这个问题,减少重复代码的出现,模板的继承就很好的解决了这个问题。

  现在我们来实现模板的继承。

  1、创建项目和app

  django-admin startproject djangotemplateinherit

  cd djangotemplateinherit

  python manage.py startapp teminherit

  2、在项目根目录下创建templates文件夹。

  3、在urls.py文件中编写路由。

  4、编写业务逻辑,即视图函数。

  5、在templates文件夹下新建3个html文件。

  4、再新建一个nav.html,表示公共的导航条部分。

  同时,我们在views.py文件中更改视图函数,渲染模板。

  5、我们在nav.html中写入如下代码

  6、分别在index.html,list.html,detail.html中引入这个nav.html导航条模板。

  模板的继承需要使用到extends关键字。

  extends:关键字表明了当前文件index.html所继承的父模板

  继承时会将此文件(当前案例是nav.html文件)的所有代码全部继承。

  在index.html文件中写入如下代码:

  其他两个list.html,detail.html文件同index.html,写入相同的内容。

  7、运行查看

  此时,这三个html都使用了公共的导航条(nav.html文件)。

  8、虽然使用了公共的导航条,但是每个html文件中,此时我们不能加入每个页面的内容(即首页内容,列表页内容,详情页内容),不信,你可以尝试?此时我们在index.html中写入一个h3标签。

  再次刷新网页,发现首页上并没有我们想要的内容。

  原因是我们已经将nav.html中内容固定了,extends继承模板时,将nav.html文件的内容完全引入,替换掉index.html的内容,所以我们自己写的h3标签是不可以运行的。值得注意的是,如果把h3标签放在{% extends ‘nav.html’ %}代码之前,是可以运行显示的,这里不做尝试,望读者自行尝试。

  9、现在我们的需求是index,list,detail的模板文件在渲染后展示不同的内容。但由于这index,list,detail三个模板文件我们现在继承的是nav.html的内容,直接将代码{% extends ‘nav.html’ %}添加在后面又不可以,放在{% extends ‘nav.html’ %}之前又失去了公共导航条的意义。那么现在唯一剩下的解决方案就是更改nav.html,使其能够让我们在不同的模板文件中实现自定义的功能。

  Django为我们提供了一个block标签。如果子模板需要在当前这个页面的基础上,添加一些自己页面的内容,使用django内置的模板标签block(代码块)即可,需要给这个块起一个名称。可以随意起。

  10、现在我们修改nav.html,预留自定义代码的接口。即增加{% block content %} {% endblock %}。

  同时在index.html文件中增加一个自定义的h2标签。

  再次刷新,此时index首页已经发生变化。多出了我们自定义的h2标签。相应的其他两个模板文件的变更与index.html相同,这里不做尝试。

  11、虽然自定义了index首页的内容。但是细心的同学就会发现了一个小小的缺陷。

  那就是打开index首页的选项卡上仍旧显示的是nav.html中的title字段。我们知道,诸如伯乐在线这个网站,每点击导航栏的一个模块,新打开的窗口上的额标题就会发生变化。而我们现在继承了模板,相应的title内容也就写死了。那么该怎么处理呢?

  12、为了方便解决这个问题,我们将nav.html的内容再次做出修改,如下图所示:

  注意:

  在block中设置的标签,就相当于是一个title的默认值。

  如果子模板没有重写这个title块,就使用这个默认值,如果子模板重写了这个title块,就使用子模板的值。

  13、由于我们需要变更index首页的title标题,所以我们需要对index.html的内容再次做出修改。通过block预留的接口,修改我们需要的title。这一点类似于类,我们可以对类进行继承,在继承的同时对其不符合我们需求的进行重写。

以上就是关于"Django模板继承和静态资源如何使用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

内容 模板 文件 代码 页面 标签 首页 导航 相同 再次 就是 网站 尝试 资源 静态 同时 果子 结构 问题 变化 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳众惠互联网科技有限公司 公司培训网络技术人员 合肥市斑马智行网络技术有限公司 北京服务器租用价格表云空间 ftp提示不安全的服务器 厦门晶屿夏软件开发有限公司 通州区正规网络技术概况 软件开发部门经理调薪申请 计算机网络技术文科还是理科 慈溪手机软件开发项目管理 数据库主键的添加语句 红永利软件开发 泰安市网络安全和信息化办 株洲it软件开发工程师大专学校 数据库查询前缀匹配 云冈区什么是网络安全创新服务 法制网络安全宣传活动总结 福建省分布式服务器云空间 个人或单位遭受网络安全事件 js获取数据库数据安全 pda软件开发实例图书 网络安全就是指信息安全吗 台州软件开发云 好玩的服务器手机版怎么联机 计算机网络技术文科还是理科 ctf网络安全入门书籍 泉州公安局网络安全课 tp5 二维数组存数据库 qq邮箱的服务器是什么 网络安全与执法课本
0