- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Django框架学习-Templates进阶用法--上
也许,你想要自定义和扩展模板引擎,下面会介绍一些关于如何去扩展模板系统的方法, 了解一下模板系统的工作原理,同时也会介绍Django模板系统中的auto-escapint功能, 这是一种安全机制。 复习一下模板语言的用法 {# 模板tag的用法 #} {% if done %} strongOver/strong {% else %} strongwait/strong {% endif %} {# 模板变量的用法 #} Now is {{ nowtime }} 在views.py中使用模板的时候: 1. 通过模板名,获得模板对象 2. 创建context对象,类似字典,用于像模板提供变量实际的值 3. 使用context对象进行模板的渲染,返回的是html网页的内容 使用RequestContext对上下文内容进行重用 当渲染一个模板的时候,我们通常使用的是django.template.Context的对象, 这里要介绍另外一个它的子类,django.template.RequestContext, RequestContext提供了一种把不同的context内容中公共的部分提取出来的方法, 让context的内容重用。 下面来看例子: 1. Context版 from django.template import loader, Contextfrom django.http import HttpResponsedef view_1(request):????# ...????t = loader.get_template(template1.html)????c = Context({????????app: My app,????????user: request.user,????????ip_address: request.META[REMOTE_ADDR],????????message: I am view 1.????})????return HttpResponse(t.render(c))def view_2(request):????# ...????t = loader.get_template(template2.html)????c = Context({????????app: My app,????????user: request.user,????????ip_address: request.META[REMOTE_ADDR],????????message: I am the second view.????})????return HttpResponse(t.render(c)) 可以看到两个context的内容有些是重复的。比如app, user, ip_address 2. 下面改写成RequestContext版 from django.template import loader, RequestContextfrom django.http import HttpResponse# 使用context processro去提供一些context内容中公共的部分,也就是返回一个字典而已。def custom_proc(request):????A context processor that provides app, user and ip_address.????return {????????app: My app,????????user: request.user,????????ip_address: request.META[REMOTE_ADDR]????}def view_1(request):????# ...????t = loader.get_template(template1.html)????# 创建方式不同,需要提供的参数有三个,request对象,字典类型,processors可选?????c = RequestContext(request, {message: I am view 1.},????????????processors=[custom_proc])????return HttpResponse(t.render(c))def view_2(request):????# ...????t = loader.get_template(template2.html)????c = RequestContext(request, {message: I am the second view.},????????????process
文档评论(0)