code: def replace_post_data_parameters(request, replacements):
      
      replacements = dict(replacements)
      if request.method == 'POST' and not isinstance(request.body, BytesIO):
          if request.headers.get('Content-Type') == 'application/json':
              json_data = json.loads(request.body.decode('utf-8'))
              for k, rv in replacements.items():
                  if k in json_data:
                      ov = json_data.pop(k)
                      if callable(rv):
                          rv = rv(key=k, value=ov, request=request)
                      if rv is not None:
                          json_data[k] = rv
              request.body = json.dumps(json_data).encode('utf-8')
          else:
              if isinstance(request.body, text_type):
                  request.body = request.body.encode('utf-8')
              splits = [p.partition(b'=') for p in request.body.split(b'&')]
              new_splits = []
              for k, sep, ov in splits:
                  if sep is None:
                      new_splits.append((k, sep, ov))
                  else:
                      rk = k.decode('utf-8')
                      if rk not in replacements:
                          new_splits.append((k, sep, ov))
                      else:
                          rv = replacements[rk]
                          if callable(rv):
                              rv = rv(key=rk, value=ov.decode('utf-8'),
                                      request=request)
                          if rv is not None:
                              new_splits.append((k, sep, rv.encode('utf-8')))
              request.body = b'&'.join(k if sep is None else b''.join([k, sep, v])
                                       for k, sep, v in new_splits)
      return request
docs: Replace post data in request--either form data or json--according to
      replacements. The replacements should be a list of (key, value) pairs where
      the value can be any of:
        1. A simple replacement string value.
        2. None to remove the given header.
        3. A callable which accepts (key, value, request) and returns a string
           value or None.