2013-03-04 1 views
2

Я разрабатываю онлайн-систему ставок на Google App Engine с Python. Что касается механизма post-redirect-get, я уже давно занимаюсь поиском в Интернете и до сих пор не имею четкого представления о том, как его реализовать. Предположим:Как реализовать Post-redirect-get на Google App Engine с Python?

HTML:

<form action="/test" method="post"> 
    ... 
    <input type="submit" value="Submit" /> 
</form> 

Python:

# Collect data from the posted form 
... 
# Save data into datastore 
... 
# Prepare template values 

tempalteValues = { ... } 
path = os.path.join(os.path.dirname(__file__), 'templates/', 'responseMessage.html') 
handler.response.out.write(template.render(path, templateValues)) 

# Then what? 

У меня есть два вопроса:

1) После оказания сообщения файла ответов, что я должен делать дальше? То есть, как реализовать «GET»?

2) Еще одна стратегия, о которой я могу подумать: если сообщение должно произойти только один раз (например, покупка продукта с уникальным номером заказа), могу ли я установить флаг в сущности, указывающий, что форма была отправлена и следующие столбцы будут проигнорированы, если флаг установлен? Это возможно или даже правильно?

(Примечание: так как порядковый номер генерируется системой, объект должен быть сохранен до отправки формы для того, чтобы получить этот номер)

Спасибо заранее.

ответ

2

Что вы ищете строит RESTful службы что-то вроде этого:

class BiddingHandler(webapp2.RequestHandler): 
    def get(self): 
     #Get code goes here for this handler 

    def post(self): 
     #code that gets your posted data and processes it 

    def delete(self): 
     #code to delete something 

app = webapp2.WSGIApplication([('/bidding', BiddingHandler)]) 

Глядя выше, если вы хотите сделать редирект после создания поста в последней строке вашего поста вместо рендеринга шаблон, который будет просто перенаправить пользователя на ГЭТ части обработчика с помощью следующей строки:

self.response.redirect('/bidding') 

То, что я показал вам выше, правильный путь для его реализации. Запись в хранилище данных и чтение из него для каждого запроса означали бы дополнительные накладные расходы и затраты.

+0

Эй, я не ожидал такого простого решения. Очень приятно и спасибо миллион, Tkingovr. –

+0

То же самое здесь я столкнулся с тем же вопросом в какой-то момент и не верил, что это было просто радостно, что я мог бы помочь! – Tkingovr

+0

У меня нет проблем в пути post-redirect-get, но у меня проблемы с удалением-перенаправлением. После завершения процесса удаления я просто self.rediret_to ('my-handler-name'), как это в методе post, но у меня есть другое удаление вместо get. (означает delete-redirect-delete вместо delete-redirect-get) Вы встречаете схожую ситуацию? –