장고 문서를 살펴 보았습니다. 많은 검색 결과를 얻었지만 많은 해결책을 시도했지만 아무 소용이 없었습니다.Django Formwizards 'done'메소드를 중지하는 방법 결제 실패시 호출되는 방법
Django의 FormWizard를 사용하여 3 부분 양식을 만들었습니다. 마지막 양식 (지불 양식)이 확인되면 지불 게이트웨이로 지불 요청을 보냅니다.
FormWizard의 'process_step'메소드에서 지불 처리를하고 있습니다.
지불이 실패 할 때 FormWizard에 지불 페이지를 다시 표시하는 방법을 알아내는 데 어려움이 있습니다. 지금은 FormWizard의 'done'메소드가 호출됩니다 (process_step에서 처리 한 후에). 모든 양식의 유효성이 검사되었습니다.
메서드를 재정의해야하는지 궁금합니다. 그 방법을 잘 모르겠지만, 현재 그것을 파악하려고합니다.
도움을 주시면 감사하겠습니다. 신용 카드 처리와 같은 감사합니다, 숀
class TrainingWizard(FormWizard):
def process_step(self,request,form,step):
if step == 0:
self.extra_context = {'stepOne': "One"}
if step == 1:
self.extra_context = {'stepTwo': "Two"}
if step == 2:
if self.get_response != "Success":
#Payment Failed
#Add error message
#Show Payment Form Again to allow user to retry
return
def get_response(self):
#return "Success"
return "Declined"
def done(self, request, form_list):
return HttpResponseRedirect('/training-registration-complete/')
폼이 FormWizard로 처리되는 방식에있어 근본적인 것이 빠져 있다고 생각합니다. 내가하고 싶은 것은 process_step의 단계 == 2에있는 주석과 같습니다 (테스트 코드에 표시된 것처럼). 거기에 넣을 코드를 모르겠습니다. 내가 무엇을 넣었는지에 관계없이 마지막 양식의 유효성이 검사되면 완료된 메서드가 실행 된 것으로 보입니다. 누군가가 지불 양식을 다시 표시하기 위해 사용할 수있는 코드 줄을 제공 할 수 있다면 (지불이 성공할 때까지 x 번 반복) 또는 render_template 또는 다른 곳에서 할 수있는 것을 제안하면 큰 도움이됩니다. – shawn