为什么Django的render()函数需要"request"参数?

con*_*d00 8 django

对不起,这可能是一个愚蠢的问题,但为什么函数中的request参数是强制性的render()

Ala*_*air 7

render()快捷方式呈现一个模板请求上下文.模板上下文处理器获取请求对象并返回添加到上下文的字典.

公共模板上下文处理器是auth上下文处理器,它接收请求对象,并将登录用户添加到上下文中.

如果您不需要render具有请求上下文的模板,则可以使用request=None.

def my_view(request):
    return render(None, "my_template.html", {'foo': 'bar'})
Run Code Online (Sandbox Code Playgroud)

  • 哦,我明白了,所以 render() 只是 render_to_response 和 context_instance=RequestContext(request) 的快捷方式。谢谢 (2认同)
  • 是的,但是使用 `render_to_response` 是[文档不鼓励](https://docs.djangoproject.com/en/1.10/topics/http/shortcuts/#render-to-response),所以我总是建议使用 `渲染`。 (2认同)