code: def jsonrpc(self, request):
          
          if request.method != "POST":
              return HttpResponseNotAllowed(["POST"])
  
          request_str = request.body.decode('utf8')
          try:
              jsonrpc_request = JSONRPCRequest.from_json(request_str)
          except (TypeError, ValueError, JSONRPCInvalidRequestException):
              response = JSONRPCResponseManager.handle(
                  request_str, self.dispatcher)
          else:
              jsonrpc_request.params = jsonrpc_request.params or {}
              jsonrpc_request_params = copy.copy(jsonrpc_request.params)
              if isinstance(jsonrpc_request.params, dict):
                  jsonrpc_request.params.update(request=request)
  
              t1 = time.time()
              response = JSONRPCResponseManager.handle_request(
                  jsonrpc_request, self.dispatcher)
              t2 = time.time()
              logger.info('{0}({1}) {2:.2f} sec'.format(
                  jsonrpc_request.method, jsonrpc_request_params, t2 - t1))
  
          if response:
              def serialize(s):
                  return json.dumps(s, cls=DatetimeDecimalEncoder)
  
              response.serialize = serialize
              response = response.json
  
          return HttpResponse(response, content_type="application/json")
docs: JSON-RPC 2.0 handler.