2010-08-17 51 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://开头...

所以,你会登录管理应用的第一次,但总是会之后显示门票。