2010-08-17 3 views
4

Я начал играть с web2py на днях для нового проекта. Мне очень нравится структура и вся концепция, которая выглядит как глоток свежего воздуха, потратив несколько лет на рамки PHP.Билет Web2py неверные ссылки

Единственное, что меня беспокоит, это система билетов. Каждый раз, когда я делаю неправильное представление, отображается страница со ссылкой на билет. Думаю, я мог бы жить с этим, если бы связь работала. В настоящее время он указывает на страницу администратора с протоколом http, а не https. Я немного почитал, и принудительные https для администратора, похоже, являются мерой безопасности, но это отлаживает боль.

Какое стандартное решение здесь? Изменить страницу с ошибкой, разрешить HTTP-администраторам использовать журналы для отладки?

С наилучшими пожеланиями Фредрик

ответ

4

Я был в той же лодке, как вы, я не хотел механизм по умолчанию. К счастью, настраиваемая обработка исключений с помощью web2py очень проста. Взгляните на route.py в корневой каталог вашего web2py. Я добавил следующее: мой

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

0

Обычно, я просто использовать http://127.0.0.1/ (если вы локальный или через SSH) или редактировать/навигации с использованием https: // ...

Таким образом, вы будете входа админ App в первый раз, но всегда будет показать билеты после.

Смежные вопросы