Django: мне нужно сделать HttpResponseRedirect для рендеринга простой строки после POST? - PullRequest
1 голос
/ 15 марта 2010

У меня есть мобильное приложение, которое отправляет запросы POST на сайт Django.

Я хочу вернуть простую строку (не на основе шаблона) после того, как приложение выполнит запрос POST со словами «Успех» или «Сбой» (РЕДАКТИРОВАТЬ: плюс дополнительная информация) при необходимости.

**** РЕДАКТИРОВАТЬ: обратите внимание, что не браузер, выполняющий запрос, это приложение (так что кнопка BACK не задействована), и я хотел бы выполнить дополнительную работу на стороне приложения на основе по результатам запроса POST - в основном я хочу вернуть некоторую информацию. *****

Однако я знаю, что после запроса POST в Django вы должны выполнить HttpResponseRedirect. Но действительно ли мне нужно перенаправить на другую страницу и написать новую функцию для ее обработки, чтобы вывести строку?

И если так, как передать статус успеха / неудачи приложения в HttpResponseRedirect, поскольку он должен принимать только один аргумент?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 15 марта 2010

Если это пользовательский POST (стандартный веб-сайт), то совет С. Лотта верен.

Но если вы делаете POSTing как вызов API, просто верните строку. На мобильном устройстве клиент оплачивает каждый HTTP-запрос.

2 голосов
/ 15 марта 2010

мне действительно нужно перенаправить на другая страница и напишите новую функцию обрабатывать все это, чтобы вывести строку?

Да.

Если они нажали "Назад" в браузере , вам будет жаль, что вы не предоставили редирект после публикации.

Если вы не перенаправляете и они нажимают «Назад» в браузере , они могут повторно отправить форму снова. Вы, вероятно, не хотите иметь дело с этим, поэтому легче перенаправить после публикации.

как передать статус успеха / неудачи приложения в HttpResponseRedirect

См. Это: http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.status_code

Редактировать

Если нет браузера, то нет кнопки назад. Поскольку кнопки возврата нет, перенаправления не требуется.

"после запроса POST в Django вы должен сделать HttpResponseRedirect "

Не имеет никакого смысла. Вы не «должны» это делать. Джанго помогает вам это сделать.

Вы не перенаправляете после POST как части веб-служб.

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

0 голосов
/ 15 марта 2010

Есть ли JavaScript? Тогда, возможно, вы могли бы сделать ajax-запрос и просто изменить содержимое после получения результата. Это также должно предотвратить проблемы «Назад», и вам не нужно перенаправлять.

0 голосов
/ 15 марта 2010

Как говорит С.Лотт, да, вы действительно хотите перенаправить.

Однако я не уверен, что вы имеете в виду, когда показывает «успех / сбой состояния приложения» после перенаправления. Перенаправление должно происходить только в том случае, если POST прошел успешно; в противном случае вы перезапустите форму с любой проверкой ошибки, показывающие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...