Предполагается, что вы говорите о том, как сохранить ссылки (или любое другое форматирование HTML), которые вы включаете в сообщения блога, а не автономные ссылки (например, для блога):
Возможно, вы захотите подумать о применении какого-либо языка разметки, такого как Markdown или BBCode. Затем вы сохраните запись блога в чистом синтаксисе разметки и предоставите метод (например, blog.get_post()
), который будет анализировать сохраненную разметку и возвращать HTML. Затем вы используете фильтр safe
в своем шаблоне, чтобы избежать экранирования HTML.
Еще лучше, чтобы избежать анализа вашей разметки при каждом запросе, кэшируйте ее в базе данных. Добавьте TextField с именем что-то вроде text_html к вашей Blog
модели. Переопределите метод save
вашей модели Blog
, чтобы разобрать разметку в HTML и сохранить HTML в поле text_html.
Затем, когда вы хотите отобразить сообщение в блоге в шаблоне, вы можете использовать {{ post.text_html|safe }}
, не анализируя разметку каждый раз.
Таким образом, ваша модель блога может выглядеть следующим образом (для ясности показано только текстовое поле)
import markdown
class BlogPost(models.Model):
text = models.TextField()
text_html = models.TextField(editable=False) # don't want to see this in Admin
def save(self, force_insert=False, force_update=False):
self.text_html = markdown(self.text)
super(BlogPost, self).save(force_insert, force_update)
Чтобы упростить процесс ввода данных, вы также можете добавить хороший редактор javascript - , например, тот, в котором я сейчас набираю ответ .