我正在努力学习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()方法有什么区别?我应该选择哪一个?为什么?
答案 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的一部分,采用由该对象表示的单个模板,并将其呈现为字符串。
重要的是,这只需要您的对象已经表示的模板。它没有发现另一个要渲染的模板的机制。
通常,快捷方式版本最有用,因为您经常希望将呈现的模板作为视图的响应返回。这就是它存在的全部原因。