Django:HttpResponse vs HttpResponseRedirect vs render_to_response有什么区别

时间:2009-12-17 12:43:39

标签: django django-urls

上面提到的事情给了我几乎相同的结果,想知道它们的主要区别是什么。

1 个答案:

答案 0 :(得分:53)

  1. response = HttpResponse("Here's the text of the Web page.")
    将使用HTTP代码200(OK)创建一个新的HttpResponse对象,并将内容传递给构造函数。一般来说,你应该只将它用于非常小的响应(比如一个AJAX表单的返回值,如果它真的很简单 - 只是一个数字左右)。

  2. HttpResponseRedirect("http://example.com/")
    将使用HTTP代码302(暂时找到/移动)创建一个新的HttpResponse对象。 这应仅用于重定向到其他页面(例如,成功发布POST后)

  3. 来自文档:

      

    class HttpResponseRedirect       构造函数采用单个参数 - 重定向到的路径。   这可以是完全限定的URL   (例如'http://www.yahoo.com/search/')   或没有域名的绝对URL   (例如'/ search /')。请注意这一点   返回HTTP状态代码302。

    足够说......

      

    render_to_response(template[, dictionary][, context_instance][,mimetype])
          使用给定的上下文字典呈现给定模板并返回   一个HttpResponse对象   渲染文本。

    是一个使用给定变量字典呈现模板的调用,以便为您创建响应。 这是您应该在大多数时间使用的,因为您希望将表示逻辑保留在模板中而不是代码中。