'Render a given resource. See L{IResource}\'s render method.
I delegate to methods of self with the form \'render_METHOD\'
where METHOD is the HTTP that was used to make the
request. Examples: render_GET, render_HEAD, render_POST, and
so on. Generally you should implement those methods instead of
overriding this one.
render_METHOD methods are expected to return a byte string which will be
the rendered page, unless the return value is C{server.NOT_DONE_YET}, in
which case it is this class\'s responsibility to write the results using
C{request.write(data)} and then call C{request.finish()}.
Old code that overrides render() directly is likewise expected
to return a byte string or NOT_DONE_YET.
@see: L{IResource.render}'

def render(self, request):

    m = getattr(self, ('render_' + nativeString(request.method)), None)
    if (not m):
        try:
            allowedMethods = self.allowedMethods
        except AttributeError:
            allowedMethods = _computeAllowedMethods(self)
        raise UnsupportedMethod(allowedMethods)
    return m(request)
