Найти - Пользователи
Полная версия: Неверно считается количество символов для поля с типом textarea.
Начало » Django » Неверно считается количество символов для поля с типом textarea.
1
MikaMika
Привет.
В шаблоне есть textarea поле, описанное в форме следующим образом:
message = forms.CharField(label=u'Сообщение',
                              max_length=10,
                              widget=forms.Textarea)
Ввожу в textarea на странице следующий текст:
1
2
3
4
5
Делаю сабмит формы, выдаётся ошибка, что превышено допустимое количество символов в поле “message”.

Убедитесь, что это значение содержит не более 10 символов (сейчас 13).

Но почему их 13?
Символов должно быть 10 (5 знаков и 5 переводов строк).
Посмотрел в теге pre, что получается в значении этого поля:
        1
2
3
4
5
Почему Django сдвинуло значение “1”?
Как правильно посчитать количество символов в textarea?
Или это возможно только с помощью javascript?
lorien
Напишите валидацию длины поля ручками, с помощью метода clean_message, заодно и причину, может быть, найдёте.
MikaMika
lorien, спасибо за совет.
В textarea переход на новую строку это - “\r\n”.
Поэтому для обработки в Питоне, текст нужно нормализовать.
Превести все “\r\n” к “\n”.
Сделал так:
message = normalize_newlines(message)
num_words = len(message)
if num_words > 10:
    raise forms.ValidationError(u"Вы превысили лимит символов!")
Открыл для себя очень полезную встроенную функцию:
normalize_newlines (from django.utils.text import normalize_newlines).
Которая приводит двойные переводы, возврат каретки к нормальному виду - “\n”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB