Подключаем Markdown в Django

8 Янв
2012

Здравствуйте! Небольшая инструкция по подключению языка разметки Markdown в 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 заменять спецсимволы и код выводится в буквальном виде.

Ну вот, собственно и всё. Надеюсь, для кого-то эта статья оказалась полезной.

P. S. Писал максимально просто и доходчиво, потому как, вдруг кто-то только начинает своё знакомство с миром программирования, и с миром Python + Django, в частности.
По материалам Хабрахабр.



загрузка...

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

Наверх