Django + Ajax
Итак, я только начинаю использовать jQuery с одним из моих проектов Django, но у меня есть довольно нубийский вопрос.
В представлении django вам нужно вернуть объект HttpResponse из представления, но иногда мне не нужно ничего возвращать. Например, я могу просто обновлять базу данных через ajax и не нужно ничего отправлять. Итак, мой вопрос: что вы делаете в этой ситуации?
Спасибо
Ответы
Ответ 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
Приветствия,