Django框架下在视图中使用模版的方法

Django框架下在视图中使用模版的方法,第1张

概述 打开current_datetime视图。以下是其内容:fromdjango.httpimportHttpResponseimportdatetime

 打开current_datetime 视图。 以下是其内容:

from django.http import httpResponseimport datetimedef current_datetime(request):  Now = datetime.datetime.Now()  HTML = "<HTML><body>It is Now %s.</body></HTML>" % Now  return httpResponse(HTML)

让我们用 Django 模板系统来修改该视图。 第一步,你可能已经想到了要做下面这样的修改:

from django.template import Template,Contextfrom django.http import httpResponseimport datetimedef current_datetime(request):  Now = datetime.datetime.Now()  t = Template("<HTML><body>It is Now {{ current_date }}.</body></HTML>")  HTML = t.render(Context({'current_date': Now}))  return httpResponse(HTML)

没错,它确实使用了模板系统,但是并没有解决我们在本章开头所指出的问题。 也就是说,模板仍然嵌入在Python代码里,并未真正的实现数据与表现的分离。 让我们将模板置于一个 单独的文件 中,并且让视图加载该文件来解决此问题。

你可能首先考虑把模板保存在文件系统的某个位置并用 Python 内建的文件 *** 作函数来读取文件内容。 假设文件保存在 /home/djangouser/templates/mytemplate.HTML 中的话,代码就会像下面这样:

from django.template import Template,Contextfrom django.http import httpResponseimport datetimedef current_datetime(request):  Now = datetime.datetime.Now()  # Simple way of using templates from the filesystem.  # This is BAD because it doesn't account for missing files!  fp = open('/home/djangouser/templates/mytemplate.HTML')  t = Template(fp.read())  fp.close()  HTML = t.render(Context({'current_date': Now}))  return httpResponse(HTML)

然而,基于以下几个原因,该方法还算不上简洁:

    它没有对文件丢失的情况做出处理。 如果文件 mytemplate.HTML 不存在或者不可读, open() 函数调用将会引发 IOError 异常。     这里对模板文件的位置进行了硬编码。 如果你在每个视图函数都用该技术,就要不断复制这些模板的位置。 更不用说还要带来大量的输入工作!     它包含了大量令人生厌的重复代码。 与其在每次加载模板时都调用 open() 、 fp.read() 和 fp.close() ,还不如做出更佳选择。

总结

以上是内存溢出为你收集整理的Django框架下在视图中使用模版的方法全部内容,希望文章能够帮你解决Django框架下在视图中使用模版的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存