Подтвердить что ты не робот

Django + Ajax

Итак, я только начинаю использовать jQuery с одним из моих проектов Django, но у меня есть довольно нубийский вопрос.

В представлении django вам нужно вернуть объект HttpResponse из представления, но иногда мне не нужно ничего возвращать. Например, я могу просто обновлять базу данных через ajax и не нужно ничего отправлять. Итак, мой вопрос: что вы делаете в этой ситуации?

Спасибо

4b9b3361

Ответ 1

Ответ HTTP больше, чем отправка содержимого в браузер. Ответ связан со статусом и несколькими заголовками HTTP. Кроме того, ответ может содержать тело (фактическое содержимое).

Я думаю, что это нормально, чтобы отправить объект HttpResponse без тела. То есть:

return HttpResponse()

Это отправит HTTP-ответ с кодом состояния 200 OK, что и произошло на стороне сервера, то есть операция прошла успешно, все в порядке. Хотя есть более эффективные способы, см. Ниже.

Внимательно говоря, когда в работе возникли проблемы, вы должны вернуть HTTP-ответ с соответствующим код состояния. Как один из кодов статуса 5XX, которые определяют ошибки на стороне сервера.

Теперь, глядя на все эти коды состояния HTTP, мы видим код кода, созданный в 201 году, который является более подходящим кодом, чем 200 OK, когда вы где-то храните данные POST, например, БД. В этом случае вы должны сделать что-то вроде этого в своем представлении:

return HttpResponse(status=201)

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

Ответ 2

Вы все еще хотите вернуть HttpResponse, чтобы jQuery знал, был ли ответ успешным или неудачным. Большинство javascript-библиотек, включающих jQuery, ищут ответ 200 ok. Не говоря уже о том, что может оказаться полезным вернуть объект JSON с количеством затронутых строк или количеством голосов.

Ответ 3

Я бы вернул пустую строку:

return HttpResponse("")

Ответ 4

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

Итак, использование return HttpResponse(status=201) - хорошая идея в этом сценарии?

Ответ 5

Извините, не могу комментировать.

Коды состояния HTTP - отличный способ добавить дополнительную информацию (например, продемонстрированный REST). См. Здесь те, которые не 200, 404 или 500:

RFC2616

Приветствия,