angrykola

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

到现在,基本使用的都是零星的HTML片段,而在实际应用中,则是使用Dango模板来创建整个HTML页面,所以在整个网站的建设中,要尽可能的减少重复和冗余代码。Django解决此问题的方式就是通过——“模板继承”——首先构造一个基础框架模板,而后在其子模版中对它所包含站点的公共部分和定义块进行重载。

下面通过修改“current_datetime.html”文件为current_Datetime创建一个模板范例:

#建立一个base.html的基础模板框架
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>{% block title %}{% endblock %}</title>      #{% block title %}用来自定义标题的模板标签
</head>
<body>
    <h1>My helpful timestamp site</h1>
    {% block content %}{% endblock %}                   #{% block content %}用来自定义网页类容的模板标签
    {% block footer %}<hr><p>Thanks for visiting my site.</p>{% endblock %}</body></html>

  然后修改current_datetime.html文件继承base模板

#current_datetime.html
{% extends "base.html" %}    #继承base.html
{% block title %}The current time{% endblock %}
{% block content %}
<p>It is now {{ now }}.</p>
{% endblock %}

现在重新修改view文件中的hours_ahead,用模板来重写页面

#view.py
def hours_ahead(request,offset): 
    try:
        offset = int(offset) 
    except:
        raise Http404()
    next_time = datetime.datetime.now() + datetime.timedelta(hours=offset) 
    return render_to_response('hours_ahead.html',locals())

新建一个hours_ahead.html文件

#hours_ahead.html文件
{% extends "base.html" %} {% block title %}未来的时间{% endblock %} {% block content %} <p>在 {{ offset }} 小时后, 将会是 {{ next_time }}.</p> {% endblock %}

现在打开页面http://127.0.0.1:8000/time/11/  和 http://127.0.0.1:8000/time/ 测试。

总结,通过django提供的模板继承,可以大大的简化代码的书写,更便于维护。

posted on 2013-11-18 17:09  kolaman  阅读(265)  评论(0)    收藏  举报