DjangoTemplates类的render()和django.shortcuts模块中的render()方法有什么区别?

时间:2016-07-11 13:19:10

标签: python django django-templates

我正在努力学习Django。我正在创建一个小应用程序来了解它的基本功能。在django应用程序的views.py中,一些教程使用模板中的render(),而其他教程则使用来自django快捷方式模块的render()。

例如,在views.py

from django.shortcuts import render
def home(request):
    context = {}
    template = "app/add_item.html"
    return render(request, template,context)

还有其他人,

from django.http.response import HttpResponse
from app.models import Items # this is the model
def home(request):
    item_list = Items.objects.order_by('-item_name')
    template = loader.get_template('app/add_item.html') # could be index.html as well
    context = {
        'item_list': item_list,
    }
    return HttpResponse(template.render(context, request))

DjangoTemplates类的render()方法和django.shortcuts模块中的render()方法有什么区别?我应该选择哪一个?为什么?

1 个答案:

答案 0 :(得分:3)

顾名思义,

django.shortcuts.render是一个快捷方式,用于将呈现的模板作为视图的响应返回。它的使用相当于上下文。它需要一个def test() { setup: // initialize a list of Users, some admin some not Collections.shuffle(users) when: task.execute(users) then: 1 * worker.initAdmins(expectedAdminList) } 实例作为其第一个参数,其主要目的是根据文档

  

将给定模板与给定的上下文字典组合,并返回带有该呈现文本的HttpResponse对象。

重要的是,这会按名称选择模板。它旨在选择模板进行渲染并作为响应返回。

Template.render是低级模板API的一部分,采用由该对象表示的单个模板,并将其呈现为字符串。

重要的是,这只需要您的对象已经表示的模板。它没有发现另一个要渲染的模板的机制。

通常,快捷方式版本最有用,因为您经常希望将呈现的模板作为视图的响应返回。这就是它存在的全部原因。