Pull to refresh

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

Здравствуйте! Небольшая инструкция по подключению языка разметки 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, в частности.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.