2010-01-26 2 views
5

코드에 의해 404 던져 핸들 : 내가 404 오류가 발생나는이 방법으로 "진짜"404 오류를 관리에서 appengine

application = webapp.WSGIApplication([ 
    ('/', MainPage),  
    #Some others urls 
    ('/.*',Trow404) #I got the 404 page 
],debug=False) 

하지만 내 코드의 일부에

self.error(404) 

와 나는 앞에서 언급 한 것과 같은 페이지를 보여주고 싶다면 ¿ 404 오류를 잡아서 관리 할 수있는 방법이 있습니까?

좀 inexistent URL로 리디렉션하지만 보이는 수 추한

답변

9

이 작업을 수행하는 가장 쉬운 방법은 당신의 기본이되는 핸들러에 오류() 메소드를 오버라이드 (override) 할 수있는 404 페이지를 생성하고, 호출 (당신이 하나를 가지고 추정)이 일반 핸들러와 404 핸들러에서. 예 :

class BaseHandler(webapp.RequestHandler): 
    def error(self, code): 
    super(BaseHandler, self).error(code) 
    if code == 404: 
     # Output 404 page 

class MyHandler(BaseHandler): 
    def get(self, some_id): 
    some_obj = SomeModel.get_by_id(some_id) 
    if not some_obj: 
     self.error(404) 
     return 
    # ... 

class Error404Handler(BaseHandler): 
    def get(self): 
    self.error(404) 
+0

멋진. 공유 해줘서 고마워! – PEZ

0

돼지 (내가 덧글을 남길 수있는 카르마이없는) 데릭 다머의 대답에 백업, 당신은 그 적절한 헤더를 보낼 Throw404이를 추가 할 수 있습니다 :

class Throw404(webapp.RequestHandler): 
    def get(self): 
    self.error(404) 
    # your 404 handler goes here 
관련 문제