파이썬 피라미드 애플리케이션에 HTML 폼이 있습니다. JavaScript가 활성화되어 있고 JavaScript가 비활성화되어있을 때 AJAX를 통해 작업하길 원합니다. 이제 AJAX 및 일반 양식 게시물에 대해 서로 다른보기를 사용하지만 코드는 응답을 제외하고 이러한 기능에 대해 거의 동일하게 보입니다. 이 클래스 (클래스 몸체)와 같은 뷰 클래스를 사용합니다.Python을 통합하는 방법 Ajax/html 폼을 처리하기위한 Pyramid 뷰
def ajax_ok(self, msg):
return Response(body=msg)
def ajax_error(self, msg):
return HTTPInternalServerError(body=msg)
@action(xhr=True, renderer='json', name='ftp')
def ftp_ajax(self):
log.debug('View: %s', 'ftp (ajax)')
if 'form.submitted' in self.params:
try:
self.config.save(self.params)
except:
return self.ajax_error('some error')
else:
return self.ajax_ok('ok')
@action()
def ftp(self):
if 'form.submitted' in self.params:
try:
self.config.save(self.params)
except:
self.request.session.flash('error; ' + msg)
else:
self.request.session.flash('success; ' + msg)
return {'content': render('templates/ftp.pt', {'ftp':
self.config.ftp})}
오류가있는 경우이를 처리하고 html로 표시해야합니다. 어쩌면 finished_callback 또는 다른 요청 유형에 대해 다른 응답을 보낼 내 자신의 렌더러를 사용해야합니까 ??
4 코드 경로 중 1 개만 같아 보이는 것처럼 보이므로 통합하려는 내용이 확실하지 않습니다. 공통된 장소에서 모든 'save'기능을 처리하고 독립적으로 오류 처리를 수행하는 것이 좋다고 말하고 싶습니다. –