Django基础知识之 模板配置和输出
admin
2023-06-29 19:43:51
0

  一,get_template 函数

  from django.template.loader import get_template

  from django.http import HttpResponse

  import datetime

  def temp_test(request):

  now = datetime.datetime.now()

  t = get_template('temp_test.html')

  html = t.render({'current_date': now})

  return HttpResponse(html)

  模板输出:

  It is now {{ current_date }}

  get_template() 函数以模板名称为参数,在文件系统中找出模块的位置,打开文件并返回一个编译好的Template 对象

  二,render_to_response() 渲染模板

  from django.shortcuts import render_to_response

  import datetime

  def current_datetime(request):

  now = datetime.datetime.now()

  return render_to_response('current_datetime.html', {'current_date': now})

  render_to_response() 的第一个参数必须是要使用的模板名称。 如果要给定第二个参数,那么该参数必须是为该模板创建 Context 时所使用的字典。 如果不提供第二个参数, render_to_response() 使用一个空字典。

  三,locals() 技巧

  from django.shortcuts import render_to_response

  import datetime

  def temp_test(request):

  now = datetime.datetime.now()

  return render_to_response('temp_test.html', locals())

  locals() 的值,它囊括了函数执行到该时间点时所定义的一切变量

  此时对应html输出的格式应该为:

  It is now {{ now }}

  四,get_template()中使用子目录

  from django.shortcuts import render_to_response

  import datetime郑州妇科医院 http://www.sptdfk.com/

  def temp_test(request):

  now = datetime.datetime.now()

  return render_to_response('member/temp_test.html', locals())

  只需在调用 get_template() 时,把子目录名和一条斜杠添加到模板名称之前

  由于 render_to_response() 只是对 get_template() 的简单封装, 你可以对 render_to_response() 的第一个参数做相同处理

  五,模板包含和模板继承

  1,模板包含:include(); 公共头部,公共尾部,以当前模板目录路径为准

  {% include 'common/nav.html' %}

  It is now {{ now }}

  2,模板继承:block 用法

  概念:模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载

  My helpful timestamp site

  {% block content %}{% endblock %}

  {% block footer %}

  Thanks for visiting my site.

  {% endblock %}

  所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分。 每个 {% block %} 标签所要做的是告诉模板引擎,该模板下的这一块内容将有可能被子模板覆盖。

  则子模板就可以更改为:

  {% extends "base.html" %}

  {% block title %}The current time{% endblock %}

  {% block content %}

  It is now {{ current_date }}.

  {% endblock %}

  功能核心点:

  1,如果在模板中使用 {% extends %} ,必须保证其为模板中的第一个模板标记。 否则,模板继承将不起作用。

  2,一般来说,基础模板中的 {% block %} 标签越多越好。 记住,子模板不必定义父模板中所有的代码块,因此可以用合理的缺省值对一些代码块进行填充,然后只对子模板所需的代码块进行(重)定义

  3,如果需要访问父模板中的块的内容,使用 {{ block.super }} 这个标签,这一个魔法变量将会表现出父模板中的内容。 如果只想在上级代码块基础上添加内容,而不是全部重载,该变量就显得非常有用。

  4,不允许在同一个模板中定义多个同名的 {% block %} 。

  5,{% extends %} 对所传入模板名称使用的加载方法和 get_template() 相同。 也就是说,会将模板名称被添加到 TEMPLATE_DIRS 设置之后。

  6,多数情况下, {% extends %} 的参数应该是字符串,但是如果直到运行时方能确定父模板名,这个参数也可以是个变量


相关内容

热门资讯

多地职校招生报名火爆 作者 | 第一财经 林靖职业教育正在成为越来越多人的“主动选择”,中职赛道不再是备选项。近日,北京中...
初一男生校门口遭群殴或失聪,教... 哥哥同学辱骂母亲,辽宁鞍山13岁少年在学校门口维护哥哥与人发生争执,随后数名同龄少年一拥而上对其实施...
演唱会大量邀请票被当众焚毁,警... 极目新闻记者 杜光然5月29日,网友发帖称,有人当众焚烧大量演唱会邀请票,视频定位于温岭市体育中心。...
多所高校撤销外语学院 人工智能的发展及其他因素的影响下,外语类专业面临挑战,近年来一些高校对外语学院进行调整、重组。近日,...
解放军少将质问日方:有没有资格... 【环球时报-环球网报道 记者 郭媛丹 苏雅瑄】 “殷鉴不远,今天的世界又处在新的十字路口,我们必须警...
《给阿嬷的情书》导演被网友二创... 《给阿嬷的情书》这段解读直接破防!网友二创还原木生守桥的画面,把邮差落水,弄丢写有真相的讣告信件,解...
伊朗最高领袖顾问批特朗普背弃外... 据凤凰卫视报道,美伊谈判前景不明,伊朗最高领袖顾问雷扎伊5月30日指责美国总统特朗普第三次背弃外交原...
免去南开大学陈某院长、中山大学... 刚刚,南开大学和中山大学发布情况通报。南开大学:免去陈某院长职务南开大学通报中指出,论文第一作者郑某...
绿色算力全栈AI平台在呼和浩特...   新华社呼和浩特5月30日电(记者侯维轶)30日,绿色算力全栈AI平台——内蒙古词元交易平台在内蒙...
北京太空智算研究院在北京亦庄成... 红星资本局5月30日消息,近日,北京太空智算研究院在北京经济技术开发区(简称“北京经开区”,又称“北...