2012-05-23 3 views
1

Я нахожусь в приложении Google App Eninge с шаблоном Django.Google App Engine: как обрезать строку после заданного числа символов

Я хочу обрезать строку после заданного числа символов, например, , если строка (заголовок сообщения) слишком длинная, «Это длинный длинный длинный заголовок», я хочу отобразить первые несколько слов, например: «Это давно давно ...»

я нашел некоторые фрагменты Django здесь: http://djangosnippets.org/snippets/1259/http://djangosnippets.org/snippets/763/

Я хочу знать:

  1. Если есть более простое решение в приложении Google Двигатель python?

  2. Как я могу использовать этот фрагмент http://djangosnippets.org/snippets/1259/ в App Engine? Я считаю, что беспорядочный исходный код не очень хорошая идея.

Мне нужно усечь строку в шаблоне Django, а не исходный код python. Что-то вроде этого: {{ string|truncatesmart:50 }}

+0

Вы хотите усечь на основе символов или слов? Вы упомянули об этом в своем вопросе. –

+0

@ Ник оба хороши. Мне нужен более быстрый. –

+0

Вам нужен _faster_ один? Скорость выполнения функции, подобной этой, будет практически ничего не влиять на общее время рендеринга вашей страницы. –

ответ

1

Из вашего описания проблемы, похоже, это ситуация, которая была специально решена чистым CSS. Взгляните на свойство text-overflow:ellipsis, которое обрезает фрагмент текста, чтобы он поместился в нужную ширину и помещал задний эллипс (...), как вы упомянули. Надеюсь, это будет гораздо более простое решение, и вам не придется «изобретать велосипед».

+0

Полезно знать, но вложение, скажем, целая книга на странице результатов поиска, вероятно, плохая идея. :) –

1

Функция truncatesmart в фрагменте django, который вы нашли, является чистым питоном, и вы можете использовать его в приложении без изменений.

1

Код Python для обрезания строки: string = string[:chars] где строка - это строка, которую вы хотите изменить, а символы - целочисленное значение для количества символов.

Фрагмент, на который вы ссылаетесь, является отличным, и, как уже упоминалось, @voscausa может использоваться непосредственно в python, если вы ищете что-то умнее, чем усечение символов X.

+0

Ты, похоже, меня не достал. Мне нужно использовать его в шаблоне Django не в исходном коде Python! –