Как сохранить html-теги с текстом в базу данных? django & react
Я использую CKEditor для ввода текста и сохранения в базе данных. Когда я извлекаю описание, оно также показывает html теги p, которые мне не нужны. Как я могу сохранить его в базе данных так, чтобы теги p не отображались, но теги типа p все еще применялись. По сути, я хочу сохранить его как html, а не как текст. Есть ли способ сделать это? В настоящее время я использую TextField для хранения описания.
Вы можете переопределить метод сохранения модели. например, всякий раз, когда объект создается или обновляется. Вы просто заменяете тег
, используя regex, а также можете использовать дополнительные теги с помощью regex .
Пример:
def save(instance):
instance.html = instance.html.replace("<p>","<div>").replace("</p>","</div>")
Вы также можете использовать regex вместо функции replace .
- Вы также можете сохранить этот вывод replace или regex в другое поле и показать это измененное html-содержимое на сайте .
Для этого следует использовать HTMLField [Django-doc]: from django.db import models
class MyModel(models.Model): description = models.HTMLField() Это сохранит HTML в базе данных и отобразит его как HTML, когда вы получите объект. Обычно HTMLField санирует HTML для предотвращения XSS-атак, но вы можете отключить это с помощью параметра: description = models.HTMLField(sanitize=False) в случае, если вы хотите разрешить произвольный HTML. Обратите внимание, что HTMLField - это TextField под капотом, он просто использует специальный виджет формы (AdminHTMLWidget [GitHub]) и сериализацию на уровне ORM.