Django: В чем разница b/w HttpResponse vs HttpResponseRedirect vs render_to_response

Вышеупомянутые вещи дают мне почти те же результаты, что и было интересно, в чем основное отличие в них.

Ответы

Ответ 1

  • response = HttpResponse("Here the text of the Web page."):
    создаст новый объект HttpResponse с HTTP-кодом 200 (OK) и содержимое, переданное конструктору. В общем, вы должны использовать это только для очень маленьких ответов (например, возвращаемое значение формы AJAX, если оно действительно просто - всего несколько или около того).

  • HttpResponseRedirect("http://example.com/"):
    создаст новый объект HttpResponse с HTTP-кодом 302 (Found/Moved временно). Это нужно использовать только для перенаправления на другую страницу (например, после успешной формы POST)

Из документов:

class HttpResponseRedirect    Конструктор принимает один аргумент - путь для перенаправления. Это может быть полный URL-адрес (например, http://www.yahoo.com/search/ ') или абсолютный URL без домена (например, '/search/'). Обратите внимание, что это возвращает код состояния HTTP 302.

достаточно сказал...

render_to_response(template[, dictionary][, context_instance][,mimetype])
    Выдает заданный шаблон с заданным контекстным словарем и возвращает объект HttpResponse с этим сделанный текст.

- это вызов для визуализации шаблона с данным словарем переменных для создания ответа для вас. Это то, что вы должны использовать большую часть времени, потому что вы хотите сохранить свою логику презентации в шаблонах, а не в коде.