error handlers
This commit is contained in:
@@ -15,9 +15,12 @@
|
||||
}
|
||||
function onLoad() {
|
||||
showMessage();
|
||||
var form = getCookie('form').split(',')
|
||||
document.getElementById('pin').selectedIndex = parseInt(form[0]);
|
||||
document.getElementById(form[1]).checked = true;
|
||||
var form = getCookie('form');
|
||||
if (form) {
|
||||
form = form.split(',')
|
||||
document.getElementById('pin').selectedIndex = parseInt(form[0]);
|
||||
document.getElementById(form[1]).checked = true;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
37
microdot.py
37
microdot.py
@@ -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,14 +278,28 @@ class Microdot():
|
||||
if args is not None:
|
||||
f = route_handler
|
||||
break
|
||||
if f:
|
||||
resp = f(req, **args)
|
||||
if isinstance(resp, tuple):
|
||||
resp = Response(*resp)
|
||||
elif not isinstance(resp, Response):
|
||||
resp = Response(resp)
|
||||
resp.write(req.client_stream)
|
||||
req.close()
|
||||
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):
|
||||
resp = Response(resp)
|
||||
resp.write(req.client_stream)
|
||||
req.close()
|
||||
|
||||
|
||||
redirect = Response.redirect
|
||||
|
||||
Reference in New Issue
Block a user