Уведомления

Группа в Telegram: @pythonsu

#1 Май 21, 2008 10:28:56

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

Проблема с кодировкой

Создаю раздел новостей. Весь код пишу в среде eclipse with module pydev. Создал приложение news и в нем создал модель имеющая следующий вид:

# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User

class News(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(prepopulate_from=('title',))
pub_date = models.DateTimeField(u'Дата опубликования')
short_text = models.TextField(u'Краткая новость')
full_text = models.TextField(u'Полная новость')
author = models.ForeignKey(User)

def __unicode__(self):
return self.title

class Admin:
pass
Захожу в адимнку и набираю тестовую новость, и при нажатии кнопку “Сохранить” получаю на странице ошибку:


DjangoUnicodeDecodeError at /admin/news/news/
'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128). You passed in DjangoUnicodeDecodeError('ascii', ‘\xd1\x8b\xd0\xb2\xd1\x8b\xd0\xb2\xd1\x8b\xd0\xb2\xd0\xb2\xd1\x84\xd1\x84’, 0, 1, ‘ordinal not in range(128)’) (<class ‘django.utils.encoding.DjangoUnicodeDecodeError’>)
……………………………………………………………………
Exception Value:
'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128). You passed in DjangoUnicodeDecodeError('ascii', ‘\xd1\x8b\xd0\xb2\xd1\x8b\xd0\xb2\xd1\x8b\xd0\xb2\xd0\xb2\xd1\x84\xd1\x84’, 0, 1, ‘ordinal not in range(128)’) (<class ‘django.utils.encoding.DjangoUnicodeDecodeError’>)
Exception Location:
/usr/local/lib/python2.5/site-packages/django/utils/encoding.py in force_unicode, line 60
…………………………………………………………………..
Unicode error hint
The string that could not be encoded/decoded was: &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;
Template error
In template /usr/local/lib/python2.5/site-packages/django/contrib/admin/templates/admin/change_list.html, error at line 18
Caught an exception while rendering: ‘ascii’ codec can't decode byte 0xd1 in position 0: ordinal not in range(128). You passed in DjangoUnicodeDecodeError('ascii', ‘\xd1\x8b\xd0\xb2\xd1\x8b\xd0\xb2\xd1\x8b\xd0\xb2\xd0\xb2\xd1\x84\xd1\x84’, 0, 1, ‘ordinal not in range(128)’) (<class ‘django.utils.encoding.DjangoUnicodeDecodeError’>)
Привожу 18 строку:
{% block result_list %}{% result_list cl %}{% endblock %}

Как я понимаю проблема в том, что система система пытаестя преобразовать данные из ascii в utf-8. Но почему это вызывает ошибку??
В mysql кодировка utf-8.



Отредактировано (Май 21, 2008 11:15:36)

Офлайн

#2 Май 21, 2008 14:57:04

clopomor
От:
Зарегистрирован: 2007-06-12
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодировкой

може спробувати
def __unicode__(self):
return u'%s', self.title



Офлайн

#3 Май 21, 2008 16:22:36

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

Проблема с кодировкой

 def __unicode__(self):
return u'%s', self.title
Нет не помогло, в данном случае получил ошибку что метод преобразования данных получает кортеж вместо строки. Проблема оказалась на поверхности, нужно было указать в шаблоне в котором ругалась использовать utf-8 и все.



Офлайн

#4 Май 21, 2008 20:15:13

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодировкой

Aleshka
Нет не помогло, в данном случае получил ошибку что метод преобразования данных получает кортеж вместо строки.
Так ты и возвращаешь кортеж. Чтоб вернуть юникодную строку надо сделать так:
return u'%s' % self.title



Офлайн

#5 Май 22, 2008 08:17:34

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

Проблема с кодировкой

James
Так ты и возвращаешь кортеж. Чтоб вернуть юникодную строку надо сделать так:
return u'%s' % self.title
Ага, спасибо, буду знать как можно будет возвращать в unicode.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version