Я нашел этот проект на коде Google. Это CCNET
плагин для генерации маркировки в CCNET
.
Эти DLL
тестируется с CCNET 1.3
, но это работает с CCNET 1.4
для меня. Я успешно использую этот плагин для маркировки моей сборки.
Теперь на передачу его к MSBuild
...
Это довольно запутанно, но у django есть несколько странных углов. В основном я полагаю, что если длина строки такая же, если вы усекаете слова x и x + 1, тогда строка не была усечена ...
{% ifnotequal post.body|truncatewords_html:30|length post.body|truncatewords_html:31|length %}
<a href="#">read more...</a>
{% endifnotequal %}
Все сводится к личным предпочтениям, но, на мой взгляд, вы слишком много работаете с шаблоном. Я бы создал метод для модели Post, read_more_needed ()
, возможно, который возвращает True или False в зависимости от длины текста. например:
def read_more_needed(self):
from django.utils.text import truncate_html_words
return not truncate_html_words(self.body,30)==truncate_html_words(self.body,31)
Тогда ваш шаблон будет выглядеть так:
{% if post.read_more_needed %}
{{ post.body|truncatewords_html:30|safe }}<a href="{{ post.url}}">read more</a>
{% else %}
{{ post.body|safe }}
{% endif %}
Вы можете написать собственный тег шаблона (см. django docs ) или вручную проверить в шаблоне, превышает ли содержимое, которое вы хотите отображать, заданную длину, с помощью length
встроенный фильтр.
Ознакомьтесь с http://code.djangoproject.com/ticket/6799
Этот патч предоставляет метод замены пробелов по умолчанию для усеченного текста.