2013-03-04 6 views
2

Google App Engine에서 Python을 사용하여 온라인 입찰 시스템을 개발 중입니다. post-redirect-get 메카니즘에 관해서는, 나는 잠시 인터넷 검색을 해왔지만 그것을 구현하는 방법에 대한 명확한 아이디어가 아직 없다. 가정 :Google App Engine에서 Python으로 Post-redirect-get을 구현하려면 어떻게해야합니까?

HTML :

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

파이썬 :

# 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

당신이이 같은 편안한 서비스 무언가 구축을 찾고 있습니다 : 당신이 당신의 게시물의 마지막 라인에 게시물을 만드는 대신 렌더링 후 리디렉션을 원한다면

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)]) 

위를보고 템플릿은 단순히 다음 줄 핸들러의 GET 부분에 사용자를 리디렉션 것 : 내가 위에서 당신을 보여 주었다 무엇

self.response.redirect('/bidding') 

그것을 구현하는 올바른 방법입니다. 모든 요청에 ​​대해 데이터 저장소에 데이터를 쓰고 데이터 저장소에서 읽으면 더 많은 오버 헤드와 비용이 발생합니다.

+0

안녕하세요. 간단한 솔루션을 기대하지 않았습니다. 매우 감사하고 백만 달러, Tkingovr. –

+0

같은 생각으로 한 번에 같은 문제에 빠져서 도울 수있는 단순한 기쁨이라고 생각하지 않았습니다! – Tkingovr

+0

post-redirect-get 경로에는 문제가 없지만 delete-redirect-get 경로에 문제가 있습니다. 삭제 프로세스가 완료된 후, 나는 단순히 자신의 post 메소드에서 self.rediret_to ('my-handler-name')를 사용하지만, 얻은 것은 get 대신에 또 다른 delete이다. (delete-redirect-get 대신 delete-redirect-delete를 의미 함) 비슷한 상황을 만듭니 까? –

관련 문제