**Apache Airflow version**: 2.0.2

**What happened**:

Tried to use the following markdown as a `doc_md` string passed to a DAG

```markdown
- Example
    -  Nested List
```

It was rendered in the web UI as a single list with no nesting or indentation.

**What you expected to happen**:

I expected the list to display as a nested list with visible indentation.

**How to reproduce it**:

Try and pass a DAG a `doc_md` string of the above nested list.
I think the bug will affect any markdown that relies on meaningful indentation (tabs or spaces)

airflow/www/utils.py
else f'?{get_params(page=current_page + 1, search=search, status=status, tags=tags)}'
    )
    output.append(next_node.format(href_link=page_link, disabled=is_disabled))  
    last_node_link = (
        void_link
        if is_disabled
        else f'?{get_params(page=last_page, search=search, status=status, tags=tags)}'
    )
    output.append(
        last_node.format(
            href_link=last_node_link,
            disabled=is_disabled,
        )
    )
    output.append(Markup('</ul>'))
    return Markup('\n'.join(output))
def epoch(dttm):
    """Returns an epoch-type date (tuple with no timezone)"""
    return (int(time.mktime(dttm.timetuple())) * 1000,)
def json_response(obj):
    """Returns a json response from a json serializable python object"""
    return Response(
        response=json.dumps(obj, indent=4, cls=AirflowJsonEncoder), status=200, mimetype="application/json"
    )
def make_cache_key(*args, **kwargs):
    """Used by cache to get a unique key per URL"""
    path = request.path
    args = str(hash(frozenset(request.args.items())))
    return (path + args).encode('ascii', 'ignore')
def task_instance_link(attr):