Как подавить дополнительный HTML, созданный django? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу создать «чистый» HTML-документ из представления django, который пользователь может сохранить и импортировать в excel. «Очистить» в этом случае означает, что он содержит только теги, указанные в моем шаблоне, без каких-либо посторонних тегов, добавляемых серверной частью. Некоторая часть Django или расширения Django добавляет дополнительный нежелательный HTML к моим окончательно отображаемым страницам. Как я могу подавить это? Например, если я передам «пустой» шаблон HTML, показанный ниже, для рендеринга:

    return render(request, 'blank.html')

вывод содержит дополнительные элементы div и скрытую текстовую область в конце тега body (выход также показан ниже).

Я отключил django-debug-toolbar, чтобы избавиться от большей части дополнительного внутреннего HTML-кода, который был добавлен в мои файлы, однако я не могу избавиться от этого последнего набора дополнительных тегов.

Файл: blank.html

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>

</body>
</html>

Выходной HTML-файл, сохраненный Chrome:

<!DOCTYPE html>
<!-- saved from url=(0028)http://localhost:57362/test/ -->
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title></title>
</head>
<body>

    <div style="background: rgba(135, 206, 235, 0.7); border: 3px double; box-sizing: content-box; display: none; pointer-events: none; position: absolute; z-index: 32767;"></div>
    <textarea style="border-radius: 0px; margin: 0px; opacity: 0; position: absolute; top: -32767px; z-index: 32767;"></textarea>
    <table style="border-collapse: collapse; visibility: hidden;">
        <tr>
             <td style="border: 1px solid; padding: 0px; width: 1px;"></td> 
        </tr>
    </table>
</body>
</html>

1 Ответ

0 голосов
/ 25 апреля 2019

Хорошо, я понял это.

Дополнительные теги были вставлены методом HttpResponse ().Изменение типа содержимого привело к загрузке чистого HTML-файла браузером клиента.

Старый код в view.py:

return render(request, 'blank.html')

Новый код в view.py:

    response =  render(request, 'blank.html', content_type='text/html')
    response['Content-Disposition'] = 'attachment; filename="somefilename.html"'
    return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...