【Django】简析Django的模板系统发展史

本文探讨了Django模板系统的发展,从最初的HTML硬编码到使用Template和Context,再到get_template()和render_to_response()的引入。文章详细介绍了如何通过设置TEMPLATE_DIRS加载模板,利用locals()简化视图,以及如何利用include模板标签和模板继承实现代码复用。通过模板继承,可以有效地管理头部、底部和不同中间内容的差异化。
摘要由CSDN通过智能技术生成

任何系统都是在不断的优化不断的发展,现在我以个人经验总结下Django模板系统的来龙去脉

未使用模板时的html硬编码

尽管这种技术便于解释视图是如何工作的,但直接将HTML硬编码到视图里却并不是一个好主意。

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)


开始使用模板系统Template,Context

  模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档。

  模板系统是一个Python库,可以在任何地方使用它,而不仅仅是在Django视图中。

在Python代码中使用Django模板的最基本方式如下:

  可以用原始的模板代码字符串创建一个Template对象,Django同样支持用指定模板文件路径的方式来创建Template对象。
  
  调用模板对象的render方法,并且传入一套变量context。它将返回一个基于模板的展现字符串,模板中的变量和标签会被context值替换。

代码如下:

>>> from django import template
>>> t = template.Template('My name is {
   { name }}.')
>>> c = template.Context({
  'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian.

  必须指出的一点是,t.render(c)返回的值是一个Unicode对象,不是普通的Python字符串,可以通过字符串前的u来区分。在框架中,Django会一直使用Unicode对象而不是普通的字符串。如果明白这样做会带来多大便利,就可知道Django在后台有条不紊地做这些工作;如果不明白从中获益了什么,只需要知道Django对Unicode的支持,将让应用程序轻松地处理各式各样的字符集,而不仅仅是基本的A~Z英文字符。

from django.template import Template, Context
from django.http import HttpResponse
import datetime

def current_datetime
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值