나는 같은 것을 할 싶습니다python appengine에서 basehandler의 핸들러를 어떻게 호출합니까?
class Basehandler(webapp.RequestHandler):
def __init__(self):
if checkforspecialcase: #check something that always needs to be handled
return SpecialCaseHandler.get()
class NormalHandler(Basehandler):
def get(self):
print 'hello world'
return
class SpecialCaseHandler(Basehandler):
def get(self):
print 'hello special world'
return
아이디어는 특정 사건이 충족되는 경우에 상관없이 처음이라 불리는 핸들러, 우리는 기본적으로 다른 처리기로 전환 없다는 것입니다.
저는 파이썬에 익숙하지 않아, 제가하려고하는 것이 가능한지 확실하지 않습니다. 또는 이것이 최선의 접근 방법인지 여부. 필자가 실제로 시도하고있는 것은 등록 프로세스를 시작했지만 완료하지 않은 사람이 프로필 작성 페이지를 보여줄 수 있는지 확인하는 것입니다. 그래서 "checkforspecialcase"는 세션을보고 불완전한 정보를 확인합니다.
내가 시도한 첫 번째 시도이지만 아무 것도 시도하지 않았습니다. 위의 조건 뒤에 self.redirect ('/ special-case')를 입력하면 다음 오류가 발생합니다. "AttributeError : 'NormalHandler'객체에 'request'속성이 없습니다." get() 또는 post() 메서드 내에서 사용할 수 있지만 초기화 메서드에서는 사용할 수 없습니다. –
네, 맞습니다. 'get' 메소드에서 조건문을 사용하지 않는 이유는 무엇입니까? 왜 우리는'__init__'을 필요로합니까? – dheerosaur
이 조건을 모든 페이지에 적용하려면 basehandler 클래스에서 한 번 실행하는 것이 좋습니다. 그리고 basehandler를 확장하는 클래스의 get/post 메소드는 basehandler의 get/post 메소드를 덮어 쓴다고 생각합니다. 그래서 이것을 get/post 메쏘드에 넣으려면 get/post 메쏘드에 넣어야 할 필요가 있습니다. 그냥 말리려고. –