error handlers

This commit is contained in:
Miguel Grinberg
2019-04-19 20:21:51 +01:00
parent 52f2d0c491
commit 0f2c749f6d
2 changed files with 35 additions and 11 deletions

View File

@@ -15,10 +15,13 @@
}
function onLoad() {
showMessage();
var form = getCookie('form').split(',')
var form = getCookie('form');
if (form) {
form = form.split(',')
document.getElementById('pin').selectedIndex = parseInt(form[0]);
document.getElementById(form[1]).checked = true;
}
}
</script>
</head>
<body onload="onLoad();">

View File

@@ -243,6 +243,7 @@ class URLPattern():
class Microdot():
def __init__(self) :
self.url_map = []
self.error_handlers = {}
def route(self, url_pattern, methods=None):
def decorated(f):
@@ -251,6 +252,12 @@ class Microdot():
return f
return decorated
def errorhandler(self, status_code_or_exception_class):
def decorated(f):
self.error_handlers[status_code_or_exception_class] = f
return f
return decorated
def run(self, host='0.0.0.0', port=5000):
s = socket.socket()
ai = socket.getaddrinfo(host, port)
@@ -271,8 +278,22 @@ class Microdot():
if args is not None:
f = route_handler
break
try:
if f:
resp = f(req, **args)
elif 404 in self.error_handlers:
resp = self.error_handlers[404](req)
else:
resp = 'Not found', 404
except Exception as exc:
resp = None
if exc.__class__ in self.error_handlers:
try:
resp = self.error_handlers[exc.__class__](req, exc)
except:
pass
if resp is None:
resp = 'Internal server error', 500
if isinstance(resp, tuple):
resp = Response(*resp)
elif not isinstance(resp, Response):