Хотите хранить html-коды в БД и позволять им появляться при нажатии кнопки

#python #html #jquery #flask

#python #HTML #jquery #flask

Вопрос:

Мне интересно, как хранить и загружать HTML-коды. В частности, я хочу хранить html-коды в некоторой базе данных и позволять им появляться на экране при нажатии кнопки.

Сейчас я пытаюсь сохранить его в csv-файле, и, похоже, он не работает. Не знаю других способов.

Это то, что я делал, и вы бы знали, что я хочу сделать.

—csv — (открывается и отображается как ‘obj’ в flask)

 ind, title, article
1, A, <p> content</p>
2, B, <table style="color:blue"><tr>a</tr><table>
 

—html —(FLASK)

 <div id='content'><div>
<tr id={{obj.ind}}>
    <td>{{ obj.ind }}</td>
    <td>{{ obj.title }}</td>
        <script type=text/javascript>
          $(document).ready(function(){             
                $("#{{obj.ind}}").click(function(){
                    $('#content').html("{{ obj.article }}") 

                })
            })      

        </script>    
    </td>
 

Скрыт лист кода python Flask, который открывает csv-файл как «obj» и отображает его с помощью HTML-листа.

Когда вы нажимаете td ‘title’, в div ‘content’ должно отображаться каждое содержимое html. Но это не работает. Я думаю, что файл csv не может хранить html-коды, но не знаю других альтернатив. Надеюсь, вы знаете способ.

Комментарии:

1. Что вы видите в сгенерированном исходном коде, отправленном в браузер? Какие-либо ошибки в консоли инструментов разработчика браузера?

2. @charlietfl он показывает сам html-код, но в виде текста. вот так [ <div style=»position:fixed; top: 100px; left: 350px; width:300px; перенос слов: разрыв слов» id=»content»><table style=»color:blue»><tr>a</tr><таблица></ div> ]

3. @charlietfl в этой консоли ‘<table style=»color:blue»><tr>a</tr> <таблица>’ цвет этой части отображается черным, точно так же, как если бы это был чистый текст, а не код. Более того, когда я копирую и вставляю эту часть, она анализируется другим способом. вот так. <стиль div=»позиция: фиксированная; вверху: 100 пикселей; слева: 350 пикселей; ширина: 300 пикселей; перенос слов: разрыв слова» id=»содержимое»> < стиль таблицы=»цвет: синий» > amp; < tr amp; >a amp; </tr > <таблица></div>

4. Похоже, серверная часть преобразует < и > в html-объекты amp;< и amp;>

5. @charlietfl что мне делать? это бесполезно для декодирования с помощью синтаксического анализатора html

Ответ №1:

charlietfl прав.
HTML-код автоматически экранируется. Чтобы предотвратить это, вы могли бы использовать безопасный фильтр jinja.

{{ obj.article | safe }}

Обратите внимание на кавычки внутри вашей замены.