Найти - Пользователи
Полная версия: Ошиба django.utils.encoding.DjangoUnicodeDecodeError: 'utf8'
Начало » Django » Ошиба django.utils.encoding.DjangoUnicodeDecodeError: 'utf8'
1
Baskervil
Создаю проект “Реестра больных” столкнулся с такой проблемой:
выполняю manage.py syncdb - создаются все таблицы, запрашивает имя пользователя, пороль, мыло, все ОК, а потом вылетает ошибка:
C:\dip\todo>manage. py syncdb
Traceback (most recent call last):
File "C:\dip\todo\manage.py", line 11, in <module>
execute_manager(settings) и т.д
последняя строка ошибки такая:
   File "C:\Python25\Lib\site-packages\gjango\utils\encoding.py", line 88, in force_unicode
raise DjangoUnicodeDecodeError(s, *e.args)
django.utils.encoding.DjangoUnicodeDecodeError: 'utf8' code can't decode bytes in position 0-1: invalid data. You passed in '\xd1\xf2\xe0\xf2\xe8\xf1\xf2\xe8\xea\xe0' (<type 'str'>)
Кодировка MySql - utf8, как надо.
Вот пример одной из моделей:
# -*- coding: utf-8 -*-
from django.db import models
YES_NO_CHOICES = (
( 'Y', 'Да' ),
( 'N', 'Нет' ),
)

class Patients( models.Model ):
first_name = models.CharField(
max_length = 255,
verbose_name = "Имя" )

last_name = models.CharField(
max_length = 255,
verbose_name = "Фамилия" )
last_name.alphabetic_filter = True

birthday = models.DateField(
verbose_name = "Дата рождения" )

gender = models.CharField(
max_length = 1, choices = ( ( 'M', 'Мужской' ), ( 'F', 'Женский' ), ),
verbose_name = "Пол" )

code = models.CharField(
max_length = 255,
verbose_name = "Код" )

def __unicode__( self ):
return u"%s %s" % ( self.first_name, self.last_name )

class Meta:
verbose_name = 'пациент'
verbose_name_plural = 'Пациенты'
""
Больницы
"""
class Hospitals( models.Model ):
title = models.CharField( max_length = 255, verbose_name = "Название" )
city = models.CharField( max_length = 255, verbose_name = "Город" )

def __unicode__( self ):
return u"%s %s" % ( self.title, self.city )

class Meta:
verbose_name = 'госпиталь'
verbose_name_plural = 'Госпитали'
Подскажите пожалуйста в чем дело, что делаю не так?
zheromo
Проверьте что кодировка файла действительно utf-8.
И поставьте перед всеми строчками u
u'пациент'
Baskervil
Не совсем понял, что значит перед всеми строчками? Перед всеми строчками кода?
zheromo
zheromo
что значит перед всеми строчками?
перед всеми строковыми литералами
т.е. вместо verbose_name = ‘пациент’ пишем verbose_name = u'пациент'
Baskervil
Все со всем разобрался, в одной из моделей почемуто была кодировка не utf8, хотя изначально все выстовлял как требуется. Еще раз спасибо.
Chrizt
всё-таки u'строка' нужно было оформить.
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