Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 10, 2008 19:48:56

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

Здравствуйте.

Вопрос

при вставке в текст управляющих символов например \r\n - итп с последующим сохранением этого текста в базе происходит следующие:

если строка записывалась с помощью формы т.е. например пользователь набирал текст в поле созданное
через forms.py:

message = forms.CharField (
widget = forms.Textarea (attrs = {'rows':'10', 'cols':'30', 'class':'forma',})
)
и нажимает кнопку enter, то в принципе должен формироваться упр. символы \n\r для индентификации переноса на новую строку

При выводе через ipython:
f = Feedback.objects.get(pk=1)
print f.message
то перевод строк происходит правильно как .

если же через темплэйт производить вывод то в месте где должен быть перенос строки – находиться пробел.
При просмотре базы sqlite3 через модуль фарфокса то тоже спец символы не наблюдаю

модель куда пишу строку: (делал также с включенным переопределенным методом save модели )
class F(models.Model):
message = models.TextField(max_length=1500)

def save(self):
self.message = '1\n\r2\n\r3\n\r4'
super(F,self).save()

def __unicode__(self):
return (
self.message,
)
вопрос: как правильно обрабатывать эти спецсимволы ? Есть ли какие то пайтоновские библиотеки может быть


спасибо

Офлайн

#2 Ноя. 10, 2008 21:08:34

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Управляющие символы

если же через темплэйт производить вывод то в месте где должен быть перенос строки – находиться пробел.
Темплейт html-ный?

Офлайн

#3 Ноя. 10, 2008 21:13:21

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

да темплате нтмл

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><!-- Insert your title here --></title>
</head>
<body>
{{ mes }}
</body>
</html>
вьювом render_to_response вывожу перенную mes

Офлайн

#4 Ноя. 10, 2008 21:38:28

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

lorien
<pre>{{ foobar }}</pre>
или
{{ foobar|linebreaks }}
Да действительно так правильно.
правда http://www.w3schools.com/TAGS/tag_pre.asp не очень то подходит


а я еще нашел метод decode() но это на уровне вьюва уже работать можно со строкой.

или данный метод используют для построения фильтра linebreaks?

вот что выдало: как раз и те спец символы потянуло
In : f.message.decode()
Out: u'1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n8'

type(f.message)
Out: <type ‘unicode’>

Отредактировано (Ноя. 10, 2008 22:33:12)

Офлайн

#5 Ноя. 10, 2008 22:40:21

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

Ferroman
если же через темплэйт производить вывод то в месте где должен быть перенос строки – находиться пробел.
Темплейт html-ный?
Этот вопрос к тому что если не html-льный то разбирать лучше методом decode() ?

Офлайн

#6 Ноя. 11, 2008 00:32:11

SvartalF
От:
Зарегистрирован: 2008-06-29
Сообщения: 73
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

Потому что в HTML \r\n не перенесет текст на следующую строку, для это нужен либо <p>, либо <br />.
Фильтр |linebreaks как раз обрамляет каждую строку тегом <p>



Офлайн

#7 Ноя. 11, 2008 01:01:25

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

SvartalF
Потому что в HTML \r\n не перенесет текст на следующую строку, для это нужен либо <p>, либо <br />.
Фильтр |linebreaks как раз обрамляет каждую строку тегом <p>
Это понятно что не переносят на новую строку.
Я просто считал что джанга эти спецсимволы должна конвертить на лету в символы html кода, когда передается поток данных из вьюва в темплэйт.
Сейчас уже понял что это не так но возможно это было бы удобно.

Офлайн

#8 Ноя. 11, 2008 01:27:10

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Управляющие символы

SvartalF
Да, для того и спрашивал :)

Сейчас уже понял что это не так но возможно это было бы удобно.
Ну так напиши свой фильтр, делов-то ;)

Офлайн

#9 Ноя. 11, 2008 13:51:24

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Управляющие символы

lorien
Эээ, зачем писать, он уже есть - linebreaks.
Ага а еще linebreaksbr без вставки <p> только одни <br />

Офлайн

#10 Ноя. 11, 2008 15:14:51

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Управляющие символы

lorien
Ну, вот и замечательно.
Но так бы узнал больше… ;)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version