最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 14:34:29
文档

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

Django框架下在视图中使用模版的方法:打开current_datetime 视图。 以下是其内容: from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = It is now %s. % no
推荐度:
导读Django框架下在视图中使用模版的方法:打开current_datetime 视图。 以下是其内容: from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = It is now %s. % no


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

from django.http import HttpResponse
import datetime

def current_datetime(request):
 now = datetime.datetime.now()
 html = "It is now %s." % now
 return HttpResponse(html)

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

from django.template import Template, Context
from django.http import HttpResponse
import datetime

def current_datetime(request):
 now = datetime.datetime.now()
 t = Template("It is now {{ current_date }}.")
 html = t.render(Context({'current_date': now}))
 return HttpResponse(html)

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

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

from django.template import Template, Context
from django.http import HttpResponse
import datetime

def 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框架下在视图中使用模版的方法:打开current_datetime 视图。 以下是其内容: from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = It is now %s. % no
    推荐度:
    标签: 模板 模版 视图
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top