Найти - Пользователи
Полная версия: Проблема с кодировкой
Начало » Django » Проблема с кодировкой
1
Aleshka
Создаю раздел новостей. Весь код пишу в среде 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.
clopomor
може спробувати
def __unicode__(self):
return u'%s', self.title
Aleshka
 def __unicode__(self):
return u'%s', self.title
Нет не помогло, в данном случае получил ошибку что метод преобразования данных получает кортеж вместо строки. Проблема оказалась на поверхности, нужно было указать в шаблоне в котором ругалась использовать utf-8 и все.
slivlen
Aleshka
Нет не помогло, в данном случае получил ошибку что метод преобразования данных получает кортеж вместо строки.
Так ты и возвращаешь кортеж. Чтоб вернуть юникодную строку надо сделать так:
return u'%s' % self.title
Aleshka
James
Так ты и возвращаешь кортеж. Чтоб вернуть юникодную строку надо сделать так:
return u'%s' % self.title
Ага, спасибо, буду знать как можно будет возвращать в unicode.
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