在使用Django进行web开发时,往往会构造一个基础框架模板即base.html,而后在其子模板中对它所包含站点公用部分和定义块进行重载。

首先创建一个base.html,源码为:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{% block title %}{% endblock %}</title>
  6. </head>
  7. <body>
  8. <h1>My helpful timestamp site</h1>
  9. {% block content %}{% endblock %}
  10. {% block footer %}
  11. <hr>
  12. <p>Thanks for visiting my site.</p>
  13. {% endblock%}
  14. </body>
  15. </html>

这个叫做base.html的模板定义了一个简单的html框架文档,等会我们将在我们的站点中的页面使用它。子模板的作用就是重载、添加

或保留那些块的内容。

现在新建一个current_datetime.html模板来使用它:

  1. {% extends "base.html" %}
  2. {% block title %}The current time{% endblock %}
  3. {% block content %}
  4. <p>It is now {{current_date }}.</p>
  5. {% endblock %}

再新建一个hours_ahead.html模板,源码为:

  1. {% extends "base.html" %}
  2. {% block title %}Future time{% endblock %}
  3. {% block content %}
  4. <p>In {{hour_offset }} hour(s),it will be {{next_time}}.</p>
  5. {% endblock  %}

上面的部分非html标签等会再来解释它,现在在views.py中新建两个函数,index4,与index5,分别对应这两个模板。源码为:

  1. def index4(req,offset):
  2. offset=int(offset)
  3. next_time=datetime.datetime.now()+datetime.timedelta(hours=offset)
  4. return render_to_response("hours_ahead.html",{'hour_offset':offset,'next_time':next_time})
  5. def index5(req):
  6. now=datetime.datetime.now()
  7. return render_to_response('current_datetime.html',{'current_date':now})

在url中的配置为:

  1. url(r'^hours_ahead/(\d{1,2}$)','blog.views.index4'),
  2. url(r'^current_datetime/$','blog.views.index5'),

现在启动服务器,在浏览器中查看效果,current_datetime.html为:

hours_ahead.html中的效果为:

如此两个html效果就显示出来了,同时也解释一下base.html中所起的作用,两个html中都使用了{% extends  %}标记,

这个就是继承base.html中的内容,在使用{ % block XXXXX %}    {% endblock%}时,中间的内容便是插入在使用了base.html两个标签的

中间,由此便极大的避免了代码的冗余。每个模板只包含自己独一无二的代码,无需多余的部分,而如果想要进行站点级的设计修改,仅需

修改base.html,所有其他模板会立即反映出所做修改。

上述,便是django之继承使用base.html模板。

Django之前端模板继承的更多相关文章

  1. Django框架之模板继承和静态文件配置

    一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...

  2. django 前端模板继承显示model中使用choices的字段

    比如model中的一个class Need class Need(models.Model): """ 任务 """ party_a=mod ...

  3. Django学习手册 - 模板继承与导入

    核心: PS:一个页面只能继承一个模板. 前置: 配置url. 配置views 关键字: 1. {% extends "index模板.html" %} 声明继承于哪个模板 ,关联 ...

  4. [py][mx]django模板继承-课程列表页

    课程列表页分析 1,机构类型 2,所在地区 3.排序 学习人数 先分析下 纵观页面,页头页脚都一样. django提供了模板继承. 至少 不同页面的title 面包屑路径 content内容不一致,以 ...

  5. Django(4)html模板继承、模板导入、分页实现

    1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...

  6. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  7. Django 模板 语法 变量 过滤器 模板继承 组件 自定义标签和过滤器 静态文件相关

    本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法 ...

  8. Django项目中模板标签及模板的继承与引用【网站中快速布置广告】

    Django项目中模板标签及模板的继承与引用 常见模板标签 {% static %} {% for x in range(x) %}{% endfor %} 循环的序号{% forloop %} 循环 ...

  9. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

随机推荐

  1. sql查询备份或还原等操作的大概完成时间

    查询出来的还需完成时间还算比较准确 --查询备份或还原等操作的大概完成时间 select command ,percent_complete ,running_time))+' hour, ' ))+ ...

  2. 误删 libc.so.6的解决方法(转)

    今天不小心把libc.so.6给删除了. 原系统是这样的: libc.so.6 -> lib-2.6.1.so 本想新建立一个软链接,指向 lib-2.8.so 没想到 ln 命令不能用了. 原 ...

  3. asp.net 完善注册登录+sqlite数据库

    结合sqlite数据库,完善asp.net制作的web网页中的注册和登录操作. 1. Account-Register.aspx <%@ Page Title="" Lang ...

  4. js错误处理和调试

    1.重点关注函数和可能导致函数执行失败的因素. 2.抛出错误和使用try-catch的时机:一般来说在应用程序架构较低的层次中经常会抛出错误.这个层次并不会影响当前执行的代码. 错误也得不到真正的处理 ...

  5. jms、amqp、mqtt区别与联系

    消息传递作为基本通信机制已经在全世界成功运用.无论是人与人.机器与人还是机器与机器之间,消息传递一直都是唯一常用的通信方式.在双方(或更多)之间交换消息有两种基本机制. 同步消息传递 异步消息传递 同 ...

  6. lnmp1.4环境FTP服务器的安装和使用

    首先还是用Xshell连接到VPS界面,进入lnmp解压后的目录,命令如下: cd lnmp1.4     然后安装FTP服务器,命令如下: ./pureftpd.sh   看到提示Press any ...

  7. Varnish 简介

    Varnish是高性能开源的反向代理服务器和HTTP缓存服务器 Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存 Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存 ...

  8. SQL Like中的逗号分隔符

    SQL Like中的逗号分隔符   在与数据库交互的过程中,我们经常需要把一串ID组成的字符串当作参数传给存储过程获取数据.很多时候我们希望把这个字符串转成集合以方便用于in操作. 有两种方式可以方便 ...

  9. .htaccess中的apache rewrite规则写法详解

    .htaccess中的apache rewrite写法: 1 RewriteEngine On 2 RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ 3 Rewr ...

  10. vim添加一键编译

    引用来自: http://blog.chinaunix.net/uid-21202106-id-2406761.html; 事先声明,我使用的VIM完全是基于终端的,而不是gvim或vim-x11.因 ...