2010-01-26 4 views
5

tôi quản lý "thực" 404 lỗi theo cách này:Xử lý 404 ném bởi mã trong appengine

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

Nhưng trong một số bộ phận của mã của tôi tôi ném một lỗi 404

self.error(404) 

và tôi muốn hiển thị cùng một trang đã đề cập trước đó, ¿có cách nào để nắm bắt lỗi 404 và quản lý nó không?

tôi có thể chuyển hướng đến một số url không tồn, nhưng trông xấu xí

Trả lời

9

cách dễ nhất để làm điều này là để ghi đè lên các phương pháp lỗi() trên xử lý cơ sở của bạn (giả sử bạn có một) để tạo ra các trang 404, và gọi đó là từ xử lý thường xuyên của bạn và xử lý 404 của bạn. Ví dụ:

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

Tuyệt vời. Cám ơn vì đã chia sẻ! – PEZ

0

Piggy sao về câu trả lời Derek Dahmer của (Tôi không có nghiệp chướng để lại ý kiến), sau đó bạn có thể thêm video này vào Throw404 để gửi tiêu đề phù hợp :

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