到现在,基本使用的都是零星的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提供的模板继承,可以大大的简化代码的书写,更便于维护。
浙公网安备 33010602011771号