Django: В чем разница между ч / б HttpResponse и HttpResponseRedirect против render_to_response - PullRequest
14 голосов
/ 17 декабря 2009

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

1 Ответ

53 голосов
/ 17 декабря 2009
  1. response = HttpResponse("Here's the text of the Web page.") * * 1004 создаст новый объект HttpResponse с HTTP-кодом 200 (ОК) и содержимым, переданным конструктору. В общем, вы должны использовать это только для очень маленьких ответов (например, возвращаемое значение формы AJAX, если это действительно просто - просто число или около того).

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

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

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

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

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

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

...