Шаблоны Django разбивают текст на полную мощность - PullRequest
3 голосов
/ 08 сентября 2010

Используя шаблоны django, я хотел бы разбить блок текста на первый полный стоп.Затем я хотел бы дать первому предложению класс выделения, а затем весь остальной текст - классу нормалей.как бы я это сделал?например (я знаю, что это не работает)

text = Aliquam pretium vestibulum nibh, vel molestie velit varius nec Curabitur non neque sed elit tincidunt. Dignissim eget vel du molestie magna auctor faucibus. Curabitur id nisl nec ipsum molestie egestas in at dolor. Morbi et risus ac quam sagittis accumsan. Morbi vitae elementum metus. Vestibulum malesuada ornare elit, et interdum nisi imperdiet sed.

<p class="highlight">{{text|split:"."[0]}}</p>
<p class="normal">{{text|split:"."[1]}}</p>

, что даст

<p class="highlight">Aliquam pretium vestibulum nibh, vel molestie velit varius nec Curabitur non neque sed elit tincidunt.</p>

<p class="normal">Dignissim eget vel du molestie magna auctor faucibus. Curabitur id nisl nec ipsum molestie egestas in at dolor. Morbi et risus ac quam sagittis accumsan. Morbi vitae elementum metus. Vestibulum malesuada ornare elit, et interdum nisi imperdiet sed.</p>

Я использую Django 1.1

1 Ответ

10 голосов
/ 08 сентября 2010

Определите пользовательский фильтр , скажем mysplit.

@register.filter
def mysplit(value, sep = "."):
    parts = value.split(sep)
    return (parts[0], sep.join(parts[1:]))

Затем используйте фильтр в своем шаблоне:

{% with text|mysplit:"." as parts %}
    <p class="highlight">{{ parts.0 }}</p>
    <p class="normal">{{ parts.1 }}</p>
{% endwith %}

Это было протестировано с Django1.2.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...