gpt4 book ai didi

python - Django - render()、render_to_response() 和 direct_to_template() 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 12:11:58 24 4
gpt4 key购买 nike

render()render_to_response()direct_to_template() 之间的 View 有什么区别(python/django 菜鸟可以理解的语言)

例如来自 Nathan Borror's basic apps examples

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)

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

最佳答案

https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#render

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

render() 是 1.3 中 render_to_response 的全新快捷方式,它将自动使用我肯定会使用的 RequestContext现在开始。


2020 编辑:应该注意 render_to_response() 在 Django 3.0 中被删除

https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#render-to-response

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

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


https://docs.djangoproject.com/en/1.8/ref/generic-views/#django-views-generic-simple-direct-to-template

direct_to_template 是我在 View 中使用的通用 View (而不是在我的 url 中),因为与新的 render() 函数一样,它会自动使用 RequestContext 及其所有 context_processor

direct_to_template 应该避免,因为基于函数的通用 View 已被弃用。使用 render 或实际的类,参见 https://docs.djangoproject.com/en/1.3/topics/generic-views-migration/

很高兴我已经很久没有输入 RequestContext 了。

关于python - Django - render()、render_to_response() 和 direct_to_template() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com