klen.github.io

in Blog

Django-markdown — поддержка Markdown в Django

Запуск django и других python проектов при помощи uwsgi+nginx Ctrl→
←Ctrl Настройка dnsmasq для локальной разработки (linux)


Note

Markdown (маркдаун) — облегчённый язык разметки. Первоначально создан Джоном Грубером (англ. John Gruber) и Аароном Шварцем, целью которых являлось создание максимально удобочитаемого и удобного в публикации облегчённого языка разметки. Многие идеи языка были позаимствованы из существующих соглашений по разметке текста в электронных письмах. Реализации языка Markdown преобразуют текст в формате Markdown в валидный, правильно построенный XHTML и заменяет левые угловые скобки («<») и амперсанды («&») на соответствующие коды сущностей.

Иногда возникает необходимость использовать язык разметки для редактирования текстов. HTML редактировать руками при набивании текстов никто не хочет да это и не нужно, а вот какой нибудь wiki-синтаксис или Markdown интуитивно понятны программистам. Конечно секретаршу трудно обучить не GUI-евой разметке (хотя возможно), но если проект предполагает нечастые обновления силами квалифицированного персонала, Markdown становится очень удобен.

Для своих задач я написал Django-markdownDjango приложение позволяющее быстро и несложно подключить Markdown синтаксис на проект.

Список возможностей:

  • Поддержка Markdown синтаксиса в шаблонах;
  • Поддержка в стандартных Django-flatpages;
  • Поддержка в стандартном Django-admin;
  • Поддержка в формах и виджетах (wysiwyg).

Чаще всего я использую это приложение, когда на проекте есть Django-flatpages для удобства редактирования.

Note

Django-markdown предназначен для версии Django 1.3 и выше.

Установка

Приложение можно установить из PyPi

easy_install django-markdown

# Или с помощью pip

pip install django-markdown

Подключение к проекту

Необходимо добавить django_markdown в INSTALLED_APPS, settings.py:

INSTALLED_APPS += 'django_markdown',

И создать url в базовом url_config, urls.py:

url('^markdown/', include( 'django_markdown.urls')),

Note

Подключать URL необходимо если вы хотите использовать функционал предпросмотра в виджетах.

Использование и настройка

  1. Использование в формах:
from django_markdown.widgets import MarkdownWidget

class MyMarkdownForm(forms.Form):
    content = forms.CharField( widget=MarkdownWidget() )

Note

Просто подключаем виджет к нужному полю.

  1. В стандартном Django-admin:
from django_markdown.admin import MarkdownModelAdmin

adimin.site.register(MyModel, MarkdownModelAdmin)

Note

Все поля типа TextField будут выведены с использованием Markdown виджета

  1. Django-flatpages:
# В вашем базовом url_config
from django_markdown import flatpages

... URLS ..

# Setup django admin and flatpages
admin.autodiscover()
flatpages.register()
urlpatterns += [ url(r'^admin/', include(admin.site.urls)), ]

Note

Мы импортируем flatpages из django_markdown вместо стандартного пути.

  1. Настройка скинов wysiwyg (markitup по-умолчанию) settings.py:
MARKDOWN_EDITOR_SKIN = 'simple'

Note

Подробнее про настройку скинов и JS API читайте на сайте Markitup

Надеюсь это приложение и синтаксис будут вам полезны.

Запуск django и других python проектов при помощи uwsgi+nginx Ctrl→
←Ctrl Настройка dnsmasq для локальной разработки (linux)
alt