Подтвердить что ты не робот

Кодек Django 'ascii' не может кодировать символ

В Django я хочу использовать простой тег шаблона для обрезания данных.

Это то, что у меня есть до сих пор:

@register.filter(name='truncate_simple')
def truncate_char_to_space(value, arg):
    """
    Truncates a string after a given length.
    """
    data = str(value)
    if len(value) < arg:
        return data

    if data.find(' ', arg, arg+5) == -1:
        return data[:arg] + '...'
    else:
        return data[:arg] + data[arg:data.find(' ', arg)] + '...'

Но когда я его использую, я получаю следующую ошибку:

{{ item.content|truncate_simple:5  }}

Ошибка:

'ascii' кодек не может кодировать символ u '\ u2013' в позиции 84: порядковый номер не в диапазоне (128)

Ошибка при запуске строки data = str(value)

Почему?

4b9b3361

Ответ 1

попробуйте использовать unicode() для преобразования значения (вместо str()):

data = unicode(value)

Ответ 3

Ответ

@max4ever работает для меня. также иногда вы должны поместить эту строку в начало файлов python:

from __future__ import unicode_literals

это может быть полезно при решении проблем с кодировкой unicode, таких как этот.