docs: def add_query_params(url, params):
      """
      Inject additional query parameters into an existing URL. If
      parameters already exist with the same name, they will be
      overwritten. Parameters with empty values are ignored. Return
      the modified URL as a string.
      """
      def encode(s):
          return force_bytes(s, settings.DEFAULT_CHARSET)
      params = dict([(encode(k), encode(v)) for k, v in params.items() if v])
  
      parts = list(urlparse(url))
      query = dict(parse_qsl(parts[4]))
      query.update(params)
      parts[4] = urlencode(query)
      return urlunparse(parts)