Я иногда не уверен, как использовать webapp2.redirect.
Есть ли время, когда я должен использовать
self.redirect("/blah")
вместо return self.redirect("/blah")
Вот мое понимание/угадание строки времени: (иногда меня путают, если объект ответа что-то делает или если webapp2 делает это)
- Я посещаю мой многопоточный веб-сайт www.mysite.com/name/robert, chrome отправляет GET request (позволяет предположить, что этот запрос является текстовым файлом)
- webapp2 захватывает этот "текстовый файл" и превращает его в webapp2.Request. webapp2 также создает новый webapp2.Response.
- каким-либо образом URL-адрес запроса передается маршрутизатору для сопоставления (либо через webapp2 или ответом). Соответствующим RequestHandler является инстанцирован. Метод getHandler get() вызывается с соответствующие аргументы.
- В течение этого времени только один запрос и один ответ.
- метод get() вызывает response.out.write( "hello world" ) добавление "привет мир" для тела ответа?
- метод get() вызывает self.redirect('/foo')
- Происходит
- метод get() вызывает self.out.write( "bye world" )
- ответ отправляется клиенту, содержащему мир привет, какая добавленная еда, мир bye
пример начальной функции get:
def get():
self.write('hello world')
self.redirect('/foo')
self.write('bye world')
Что такое материал? Я полагаю, что маршрутизатор находит /foo/RequestHandler. Какие изменения внесены в запрос и ответ перед тем, как foo requestHandlers get() метод называется. Является ли запрос удаленным и заменен новым запросом GET? Является ли ответ удаленным и заменен новым? Какой контекст остается в исходном обработчике запросов? выполняет ли выполнение кода возврат к первому обработчику запроса, получает метод, и если это так, что восстановленный контекст?
Извините Если это немного глоток, я попытался объяснить, что я хочу знать:)
Возможно, было бы проще попросить некоторые варианты использования (do and don'ts) использования перенаправления вместо этого.