@doktorfish0078

Почему html разметка хранимая в бд выводится на сайте обычным текстом?

Есть страничка с textarea и кнопкой отправить, юзер вводит туда что надо и отправляет. Это сохраняется в бд sqlite.
В частности я сейчас пытаюсь реализовать что-то похожее на редактор самого qna.habr для вопросов, чтобы были кнопочки,чтобы сделать текст жирным например, с помощью тегов.
Скрин формы с textarea и html

60055039b642b908751275.jpeg
<body>
    <div class="container">
        <h1 class="mb-4">Создание билета</h1>
        <form method="POST" enctype="multipart/form-data">
            <div class="form-group">
                <div class="field_content">
                    <div class="wysiwyg">
                        <div class="icons_bar">
                            <a href="#" class="icons_bar_item_control none_decor_link" onclick=
                            'document.querySelector("textarea[name=text]").value+="<b></b>"'><b>B</b></a>

                            <a href="#" class="icons_bar_item_control none_decor_link" onclick=
                            'document.querySelector("textarea[name=text]").value+="<i></i>"'><i>I</i></a>

                            <a href="#" class="icons_bar_item_control none_decor_link" onclick=
                            'document.querySelector("textarea[name=text]").value+="<ol>\n\t<li></li>\n</ol>"'>O</a>

                            <a href="#" class="icons_bar_item_control none_decor_link" onclick=
                            'document.querySelector("textarea[name=text]").value+="<spoiler title=""></spoiler>"'>S</a>
                        </div>
                    </div>
                </div>
                <textarea class="form-control br-0 mh-350 dark_theme_input" name="text"></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Создать билет</button>
        </form>
    </div>
</body>


И потом собственно на другой страничке все созданные "темы" юзером отображаются.
Скрин отображения

600550d991f68033938608.jpeg

Но блин, тэги не.... как сказать? Не конвертируются, не преобразовываются, они просто как текст.
Я погуглил, нашёл что-то про html_entity_decode, unescape, escape. Что-то попробовал,но ничего не выходит. Не могу понять почему теги просто текстом выходят
Вот html'ка основной страницы, где выводятся темы с БД
html'ка основной страницы

<body>
	<div class="container">		
		<h3>Билеты</h3> 
		{% for t in tickets %}
		<div class="row">
			<div class="ticket">
				<div class="second_ans br">{{ t.text }}</div>
				<a class="btn btn-info disabled" href="recording/{{ t.id }}">Редактировать</a>
				<a class="btn btn-danger disabled" href="delete/{{ t.id }}">Удалить</a>
			</div>
		</div>
		{% endfor %}
	</div>
</body>


Как это хранится в БД
600552999d060849082036.png

Ещё раз подвожу итог. Мне необходимо,чтобы например <b>asdas</b> выдавалось на основной стр. как asdas ну и другие теги аля курсив,спойлер тоже работали)
Подскажите молодому пожалуйста, второй день голову ломаю,не могу понять. У друга спросил, сайт он делал приличный, он руками разводит, говорит у него в бд так-же хранится как и у меня всё,но работает.
  • Вопрос задан
  • 146 просмотров
Решения вопроса 2
@remzalp
Программер чего попало на чем попало
Autoescaping - автоматом преобразует HTML в текст.
https://flask.palletsprojects.com/en/1.1.x/templating/

Сделать в шаблоне с фильтром: {{ t.text|safe }}
заодно рискуете получить в будущем XSS, если позволите кому угодно в базу пихать любой HTML код :)
Ответ написан
SoreMix
@SoreMix
yellow
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы