Здравствуйте! Небольшая инструкция по подключению языка разметки Markdown в Django.
Итак, для начала скачиваем сам markdown(можно отсюда). Устанавливаем(проблем с установкой не должно возникнуть).
Вот и всё! Итак, что мы сделали? Создали два текстовых поля, один из которых недоступен для редактирования. Зачем? Ну, во-первых, чтобы его не было видно в административном интерфейсе, а во-вторых, это помогает избежать нежелательной правки этого поля. Затем, в функции save() мы присваиваем значение поля markdown_field полю html_field и с использованием функции super() (она нужна для того, чтобы обратиться к методам класса Page) сохраняем уже видоизменённое значение в базу данных.
Обратите внимание на метод safe! Он не позволяет Django заменять спецсимволы и код выводится в буквальном виде.
Ну вот, собственно и всё. Надеюсь, для кого-то эта статья оказалась полезной.
P. S. Писал максимально просто и доходчиво, потому как, вдруг кто-то только начинает своё знакомство с миром программирования, и с миром Python + Django, в частности.
Итак, для начала скачиваем сам markdown(можно отсюда). Устанавливаем(проблем с установкой не должно возникнуть).
В файле models.py приложения делаем импорт:
from markdown import markdown
Пример models.py:
class Page(models.Model):
name = models.CharField(max_length = 50)
markdown_field = models.TextField()
html_field = models.TextField(editable = False)
def __unicode__(self):
return self.name
Затем, в конец этого класса добавляем следующий код:
def save(self):
self.html = markdown(self.markdown_field)
super(Page, self).save()
Регистрируем в административном интерфейсе:
from django.contrib import admin
admin.site.register(Page)
Вот и всё! Итак, что мы сделали? Создали два текстовых поля, один из которых недоступен для редактирования. Зачем? Ну, во-первых, чтобы его не было видно в административном интерфейсе, а во-вторых, это помогает избежать нежелательной правки этого поля. Затем, в функции save() мы присваиваем значение поля markdown_field полю html_field и с использованием функции super() (она нужна для того, чтобы обратиться к методам класса Page) сохраняем уже видоизменённое значение в базу данных.
Вот так может выглядеть шаблон отображения:
<html>
<head>
<title>Привет!</title>
</head>
<body>
<h1>{{ page.name }}</h1>
<br />
<p>{{ page.html_field|safe }}</p>
</body>
</html>
Обратите внимание на метод safe! Он не позволяет Django заменять спецсимволы и код выводится в буквальном виде.
Ну вот, собственно и всё. Надеюсь, для кого-то эта статья оказалась полезной.