Django中的模板引擎与模板使用------学习mooc中《Python云端系统开发入门》

模板引擎是模板响应的后端。这里边我们知道模板指的是HTML、javascript、CSS等相关的文件。那么模板引擎就是将这样的表示层文件与数据相整合的过程。

那么整合之后,我们引擎会把加工后的数据给到响应类型,用之前的文件型,或者是一次性响应类型等相关的类型,将模板加工后的数据反馈给用户。

django支持两种模板引擎,一种是django模板引擎,一种是jinja2模板引擎。其中第二种是第三方的模板引擎。

我们建议大家使用django。

模板引擎在setting.py文件中有相关的变量进行设置,我们可以在这个文件中找到TEMPLATES这样一个变量。

看到第一个信息是BACKEND,这个BACKEND就是指模板引擎后端的配置变量。模板目录也可以通过template变量中的DIRS变量的设定来给出。

在之前的实例中,我们需要将我们增加的模板文件,以及它放过放置的目录,写到这样的一个目录的列表中。

那么当我们的代码在一个目录模板中去寻找模板的时候,他也是按照列表的先后顺序进行查找。

在使用模板时,我们一种方式是直接使用模板的名称。另外我们也可以通过一些函数在模板目录中去查找我们使用的模板,模板查找django提供了一个函数叫get_template,它只有一个变量,就是需要查找模板的名称。

它能够在setting.py文件设定的模板目录列表中,依次查找某个具体的使用的模板名字,直到找到这个模板,并且以Template类来反馈这个模板。

如果在模板目录中没有找到我们需要使用的模板文件,将会抛出TemplateDoesNotExist异常。

django同时提供了另外一个函数叫select_template,它与get_template类非常相似。

它也能够依次按照模板列表去查找相关的模板,所不同的是它的参数不是一个具体的模板名称,而是一个模板列表,它同时可以查找多个模板,但是最后只会返回第一个它查找的模板,返回的类型也是template类。

这里边大家可以想象,在django框架中,用户编程所需要使用的每一个模板文件被表达为template类型,表达之后,这个类型需要进行一定的数据加工,将它渲染为可以响应给用户的,既有模板表现,又有数据内涵的这样的字符串,那么这个过程就叫渲染。

template类使用render方法进行渲染,渲染之后生成HTML相关的字符串。

render的方法就是将模板和内容相结合进行渲染的方法。

它天然有两个参数,第一个参数就是在当前模板下需要加载的数据信息,数据信息用字典的类型来表示。

另外要给出相关的HTTP请求,渲染函数将模板和内容整合到一起,并返回HTML字符串。是模板类型使用中非常重要的一个过程。对于用户的url访问,如果有一个静态的字符串或者静态的模板文件可以直接响应它,我们并不需要渲染过程。

但是如果需要在表现的HTML文件中去增加相关数据的时候,就需要进行渲染。

下面我们看一段小的代码:

我们可以使用get_template函数,去获取一个我们希望使用的模板,并且表达为一个类,这个类的变量名叫tpl。

进一步我们可以使用类的render方法,在其中增加一个数据,将其中的data变量替换为datalist。

那么经过render之后,就会生成一个HTML的字符串,我们可以使用HttpResponse将这个字符串反馈给用户。

所以渲染的过程,事实上是将template和context进行加工,并且生成HTML的过程。

模板使用步骤也非常简单。第一我们首先指定一个template,并且通过查找它template,定义一个他们类。

第二步进行渲染,将context类或者将字典表达的数据与模板进行整合。

说了这么多不是很形象,让我们来编个小程序,来增加一个playground的路径,来试试我们的模板和渲染的使用。

 

一、在全局路由中增加对playground的路径的索引

 

  path('playground/',msgviews.pgproc)

 

二、找到views.py文件,我们增加这个函数。

from django.template import  Template,Context

def pgproc(request):
    template = Template("<h1>这个程序的名字是{{name}}</h1>")
    context  = Context({"name":"实验平台"})
    return HttpResponse(template.render(context))

首先生成一个模板类,在这样一个模板中,其中有一个name,它是一个变量,我们需要对这个内容进行赋值。

下面我们可以生成一个context类,来表达具体的值的信息。

下一步我们通过渲染来反馈对url的响应。

 

 

我们执行一下。我们可以看到在页面上,我们的模板中,它的变量替换成了我们给定的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【第1部分】云端系统之基础 【PYC01】云端开发基础 PYC01V01 单元开篇 HD PYC01V01 单元开篇 SHD PYC01V02 云端开发全栈技术简介 HD PYC01V02 云端开发全栈技术简介 SHD PYC01V03 HTML技术理念及发展简介 HD PYC01V03 HTML技术理念及发展简介 SHD PYC01V04 CSS技术理念简介 HD PYC01V04 CSS技术理念简介 SHD PYC01V05 JavaScript技术理念简介 HD PYC01V05 JavaScript技术理念简介 SHD PYC01V06 HTTP与Web服务器简介 HD PYC01V06 HTTP与Web服务器简介 SHD PYC01V07 单元小结 HD PYC01V07 单元小结 SHD 【PYC01】云端开发基础资料及源代码 PYC01 云端开发基础学习资料 PDF PYC01(1): HTML演示代码 RText PYC01(2): HTML CSS演示代码1 RText PYC01(3): HTML CSS演示代码2 RText PYC01(4): HTML CSS演示代码3 RText PYC01(5): HTML JavaScript演示代码 RText 好好学习 天天向上 HD 好好学习 天天向上 SHD 【第2周】云端系统之框架基础 【PYC02】Django框架基础 PYC02V01 单元开篇 HD PYC02V01 单元开篇 SHD PYC02V02 Django简介与安装 HD PYC02V02 Django简介与安装 SHD PYC02V03 Django框架的最小程序 HD PYC02V03 Django框架的最小程序 SHD PYC02V04 Django框架的MTV开发模式 HD PYC02V04 Django框架的MTV开发模式 SHD PYC02V05 实例1:云端留言板之基本框架 HD PYC02V05 实例1:云端留言板之基本框架 SHD PYC02V06 单元小结 HD PYC02V06 单元小结 SHD 【PYC02】Django框架基础资料及源代码 PYC02 Django框架基础学习资料 PDF PYC02(1): Django最小程序源代码 RText PYC02(2): 云端留言板之基本框架 RText GRIT的力量 HD GRIT的力量 SHD 【第3周】云端系统之框架进阶 【PYC03】Django框架进阶 PYC03V01 单元开篇 HD PYC03V01 单元开篇 SHD PYC03V02 Django的URL路由机制 HD PYC03V02 Django的URL路由机制 SHD PYC03V03 Django的视图响应类型 HD PYC03V03 Django的视图响应类型 SHD PYC03V04 Django的视图流式响应机制 HD PYC03V04 Django的视图流式响应机制 SHD PYC03V05 Django模板引擎模板使用 HD PYC03V05 Django模板引擎模板使用 SHD PYC03V06 Django模板语言入门 HD PYC03V06 Django模板语言入门 SHD PYC03V07 单元小结 HD PYC03V07 单元小结 SHD 【PYC03】Django框架进阶资料及源代码 PYC03 Django框架进阶学习资料 PDF PYC03(1): 云端留言板进阶源代码 RText Python开发工具的选择 HD Python开发工具的选择 SHD
Django是一个用于快速开发Web应用程序的Python Web框架。而python-docx-template是一个Python库,它可以使用Word文档作为模板,然后根据传入的数据批量生成Word文档。在Django,我们可以利用python-docx-template库来实现批量生成Word文档的功能。 首先,我们需要在Django项目安装python-docx-template库。可以使用pip命令来安装该库: ```bash pip install python-docx-template ``` 接下来,我们可以在Django项目创建一个视图函数,用于接收数据并根据模板生成Word文档。在视图函数,我们可以使用python-docx-template库提供的方法将数据填充到Word模板,生成最终的Word文档。 例如,假设我们有一个Word文档模板`template.docx`,里面包含了一些需要填充数据的位置,我们可以在Django这样写视图函数: ```python from docxtpl import DocxTemplate from django.http import HttpResponse def generate_word_document(request): # 从请求获取数据 data = request.GET.get('data', '') # 读取Word模板 doc = DocxTemplate("template.docx") # 根据数据填充模板 context = {'data': data} doc.render(context) # 写入生成的Word文档 doc.save("generated_document.docx") # 返回生成的Word文档给用户 with open("generated_document.docx", 'rb') as f: response = HttpResponse(f.read(), content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document') response['Content-Disposition'] = 'attachment; filename=generated_document.docx' return response ``` 通过上述视图函数,我们可以在Django项目实现批量生成Word文档的功能,用户可以通过传入数据来生成他们所需的Word文档。这样我们就可以方便地利用PythonDjango来批量生成Word文档,提高生产效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值