Как перенаправить, а затем отобразить ошибки с Google App Engine - PullRequest
1 голос
/ 08 октября 2009

Я работаю над проектом Google App Engine, который собирает истории, отправленные пользователями.

Вот как я обрабатываю ошибки отправки в методе post моего обработчика запросов:

# get the title and content using self.request.get()
errors = []
if not title:
    errors.append("Please enter a title.")
if not content:
    errors.append("Please enter a story.")
if not errors:
    # create the story, save it to the database
    # redirect to the story's page
else:
    # pass the title and/or content to a template
    # pass the error message(s) to a template
    # the same template that displays the submission form is used here

Проблема: , поскольку моя форма отправляет сообщения на example.com / createstory.do - если возникают ошибки, я в конечном итоге снова отображаю страницу формы по этому адресу.

Что я хочу сделать: перенаправить пользователя обратно на страницу, где он отправил форму: example.com / Share , одновременно отображая сообщения об ошибках и повторное отображение данные отправленной формы.

Какой самый простой способ сделать это?

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

Ответы [ 2 ]

1 голос
/ 09 октября 2009

Нет «чистого» способа сделать это, потому что вы не можете перенаправить POST-запросы (и перенаправленный запрос также создает POST). Стандартный и самый чистый подход заключается в том, чтобы один и тот же URL отображал форму при получении с помощью GET и принимал данные при получении с помощью POST.

1 голос
/ 08 октября 2009

Вы можете перенаправить на / Share, включая ошибки в переменной GET в URL, если вы абсолютно уверены, что вам нужно использовать отдельные URL. Конечно, это делает ваш URL безобразным, поскольку теперь в нем содержится вся информация об ошибках.

Другой вариант - перенаправить обратно в «Общий доступ» и сохранить ошибки в файлах cookie или в переменной сеанса.

Сочетание любого из них с проверкой формы на стороне клиента в Javascript перед отправкой в ​​первую очередь, так что уродливое решение в большинстве случаев не найдено, может быть лучшим вариантом.

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