Django基础知识之模板配置和输出-创新互联

一,get_template 函数

成都创新互联是一家专业提供临湘企业网站建设,专注与成都做网站、成都网站设计、成都外贸网站建设H5页面制作、小程序制作等业务。10年已为临湘众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

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 %} 的参数应该是字符串,但是如果直到运行时方能确定父模板名,这个参数也可以是个变量

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:Django基础知识之模板配置和输出-创新互联
文章网址:http://cdiso.cn/article/ccicjs.html

其他资讯