Добавляем 'pymorphy' в INSTALLED_APPS.
Описываем в settings.py установленные словари:
PYMORPHY_DICTS = {
'ru': { 'dir': '/usr/share/pymorphy/ru' },
}
более сложный пример:
PYMORPHY_DICTS = {
'ru': {
'dir': os.path.join([PROJECT_DIR, 'files', 'dicts']),
'backend': 'cdb',
'use_cache': False,
},
}
Параметры:
В случае, когда настроена интеграция pymorphy с django, экземпляр анализатора следует получать следующим образом:
from pymorphy.django_conf import default_morph as morph
Не стоит получать экземпляр анализатора через pymorphy.get_morph во вьюхах (или еще где-то на каждый запрос) - это приведет к утечке ресурсов.
Фильтры подключаются следующей командой:
{% load pymorphy_tags %}
Меняет грамматическую форму каждого слова на указанную в параметрах. Про доступные параметры можно почитать тут (см. “Полный формат”).
Пример:
{# в переменной city "Нижний Новгород" #}
{% load pymorphy_tags %}
Мы начали работу в {{ city|inflect:"пр" }}!
{# выведет "Мы начали работу в Нижнем Новгороде!" #}
Пример с несклоняемой частью
{% load pymorphy_tags %}
Не осталось у нас {{ "лошадь [[Пржевальского]]"|inflect:"рд,мн" }}.
{# выведет "Не осталось у нас лошадей Пржевальского" #}
Идентичен фильтру inflect за исключением того, что противоположным образом трактует [[ ]]
{% load pymorphy_tags %}
Не осталось у нас {{ "[[лошадь]] Пржевальского"|inflect_marked:"рд,мн" }}.
{# выведет "Не осталось у нас лошадей Пржевальского" #}
Ставит слово в форму, которая согласуется с заданным числом (1 попугай, 2 попугая, 5 попугаев).
{% load pymorphy_tags %}
{# в переменной num число попугаев (пусть = 38) #}
На дереве {{ num }} {{ "попугай"|plural:num }}.
{# выведет "На дереве 38 попугаев." #}
{# в переменной animal - "лошадь" #}
А еще есть {{ num }} {{ animal|plural:num }}.
{# выведет "А еще есть 38 лошадей." #}
Фильтры inflect и plural не склоняют все, что заключено в двойные квадратные скобки. Фильтр inflect_marked - наоборот, работает только с тем, что в двойных квадратных скобках.
Можно указать другие разделители (обязательно 2х-символьные), определив в settings.py переменные PYMORPHY_MARKER_OPEN и PYMORPHY_MARKER_CLOSE.
Примечание
Фильтры из pymorphy_tags стараются сохранить написание больших-маленьких букв (обрабатываются варианты “ВСЕ СЛОВО БОЛЬШИМИ”, “С заглавной”, “все маленькими”).
Если по какой-то причине смена формы не удалась, возвращают исходную строку.
Предупреждение
Фильтры в настоящий момент могут плохо работать с именами и фамилиями.