一尘不染

Django-render(),render_to_response()和direct_to_template()之间有什么区别?

django

最新的差值(在语言蟒/ django的小白可以理解)在之间的视图render()render_to_response()direct_to_template()

例如,来自Nathan Borror的基本应用示例

def comment_edit(request, object_id, template_name='comments/edit.html'):
    comment = get_object_or_404(Comment, pk=object_id, user=request.user)
    # ...
    return render(request, template_name, {
        'form': form,
        'comment': comment,
    })

但我也看到了

    return render_to_response(template_name, my_data_dictionary,
              context_instance=RequestContext(request))

    return direct_to_template(request, template_name, my_data_dictionary)

有什么区别,在任何特定情况下使用什么?


阅读 320

收藏
2020-03-28

共1个答案

一尘不染

render(request, template[, dictionary][, context_instance][, content_type][, status][, current_app])

render()是一个render_to_response在1.3中崭新的快捷方式的品牌,该快捷方式将自动使用RequestContext,从现在开始我肯定会使用它。

render_to_response(template[, dictionary][, context_instance][, mimetype])¶

render_to_response是教程等中使用的标准渲染功能。要使用RequestContext你必须指定context_instance=RequestContext(request)

direct_to_template是我在视图中使用的通用视图(而不是在URL中使用),因为像新render()功能一样,它会自动使用RequestContext及其所有context_processors。

direct_to_template 应避免使用,因为不建议使用基于函数的通用视图。使用render还是实际使用的类,

2020-03-28