2010-08-17 49 views
4

我有一天在一個新項目中玩弄了web2py。在使用PHP框架花了幾年後,我真的很喜歡這個結構和整個概念,感覺像是一股清新的空氣。Web2py票證無效鏈接

困擾我的唯一事情就是票務系統。每次我做錯了一個帶有鏈接到一張票的頁面被呈現。我想我可以忍受,如果鏈接工作。它目前指向一個使用http作爲協議而不是https的管理頁面。我已經做了一些閱讀,並且強制https管理員似乎是一種安全措施,但這使調試變得很痛苦。

這是什麼標準的解決方案?改變錯誤頁面,允許http用於管理和使用日誌進行調試?

問候 弗雷德裏克

回答

4

我是在同一條船上,你,我不喜歡默認的機制。幸運的是,使用web2py定製異常處理非常簡單。查看web2py目錄根目錄下的routes.py。我已經添加了以下到礦井:

routes_onerror = [( 'APPLICATION_NAME/*', '/ APPLICATION_NAME /錯誤/索引')]

此路由任何例外我的錯誤處理程序控制器(APPLICATION_NAME /控制器/error.py)中,我定義爲我的畫質指數:

def index(): 
    if request.vars.code == '400': 
     return(dict(app=request.application, 
      ticket=None, 
      traceback="A 400 error was raised, this is controller/method path not found", 
      code=None, 
      layer=None, 
      wasEmailed=False)) 
    elif request.vars.code == '404': 
     return(dict(app=request.application, 
      ticket=None, 
      traceback="A 404 error was raised, this is bad.", 
      code=None, 
      layer=None, 
      wasEmailed=False)) 
    else: 
     fH = file('applications/%s/errors/%s' % (request.application,request.vars.ticket.split("/")[1])) 
     e = cPickle.load(fH) 
      fH.close() 
      __sendEmail(request.application,e['layer'],e['traceback'],e['code']) 
     return(dict(app=request.application, 
      ticket=request.vars.ticket, 
      traceback=e['traceback'], 
      code=e['code'], 
      layer=e['layer'], 
      wasEmailed=True)) 

正如你所看到的非400和404錯誤,我通過電子郵件發送的回溯到自己,然後調用相應的視圖/錯誤/ index.html的。在製作過程中,這種觀點給出了一個通用的「我很抱歉發生了錯誤,開發人員已通過電子郵件發送」。在我的開發服務器上,它顯示格式化的回溯。

+0

感謝您的快速回復馬克,這似乎是一個很好的解決方案! – Fredrik 2010-08-18 19:52:43

0

通常情況下,我只是用http://127.0.0.1/(如果你是在本地還是通過SSH)或編輯/導航使用https://開頭...

所以,你會登錄管理應用的第一次,但總是會之後顯示門票。