**Apache Airflow version**: 2.0.0 - 2.1.0

**Kubernetes version**: N/A

**Environment**:

- **Cloud provider or hardware configuration**: Docker on MacOS (but also AWS ECS deployed)
- **OS** (e.g. from /etc/os-release): MacOS Big Sur 11.3.1
- **Kernel** (e.g. `uname -a`): Darwin Kernel Version 20.4.0
- **Install tools**:
- **Others**:

**What happened**:

When a code block is a part of a DAG's `doc_md`, it does not render correctly in the Web UI, but collapses all the lines into one line instead.

**What you expected to happen**:

The multi line code block be rendered with line breaks preserved.

**How to reproduce it**:
Create a DAG with `doc_md` containing a code block:

````python
from airflow import DAG

DOC_MD = """\
# Markdown code block

Inline `code` works well.

```
Code block
does not
respect
newlines
```
"""

dag = DAG(
    dag_id='test',
    doc_md=DOC_MD
)
````

The rendered documentation looks like this:
<img src="https://user-images.githubusercontent.com/11132999/119981579-19a70600-bfbe-11eb-8036-7d981ae1f232.png" width="50%"/>

**Anything else we need to know**: N/A


airflow/www/utils.py
"""Return URL-encoded params"""
    return urlencode({d: v for d, v in kwargs.items() if v is not None}, True)
def generate_pages(current_page, num_of_pages, search=None, status=None, tags=None, window=7):
    """
    Generates the HTML for a paging component using a similar logic to the paging
    auto-generated by Flask managed views. The paging component defines a number of
    pages visible in the pager (window) and once the user goes to a page beyond the
    largest visible, it would scroll to the right the page numbers and keeps the
    current one in the middle of the pager component. When in the last pages,
    the pages won't scroll and just keep moving until the last page. Pager also contains
    <first, previous, ..., next, last> pages.
    This component takes into account custom parameters such as search, status, and tags
    which could be added to the pages link in order to maintain the state between
    client and server. It also allows to make a bookmark on a specific paging state.
    :param current_page: the current page number, 0-indexed
    :param num_of_pages: the total number of pages
    :param search: the search query string, if any
    :param status: 'all', 'active', or 'paused'
    :param tags: array of strings of the current filtered tags
    :param window: the number of pages to be shown in the paging component (7 default)
    :return: the HTML string of the paging component
    """
    void_link = 'javascript:void(0)'
    first_node = Markup(
        """<li class="paginate_button {disabled}" id="dags_first">
    <a href="{href_link}" aria-controls="dags" data-dt-idx="0" tabindex="0">&laquo;</a>