ошибка unicode при сохранении объекта в django admin

В моем приложении django у меня есть некоторые объекты, которые вызывают соответствующий URL-адрес в admin django не ascii. (например: http://mysite/admin/myapp/myclass/Présentation/ )

Я могу редактировать объект без каких-либо проблем, но когда я его сохраняю, у меня есть следующая ошибка:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 24: ordinal not in range(128), HTTP response headers must be in US-ASCII format

Странно, что объект правильно сохранен в базе данных.

Кто-нибудь знает, как администратор Django управляет юникодом? Любая информация, указатель или идея, которые могут помочь решить эту проблему, будут оценены.

заранее спасибо

Обновление: вот код модели

 class Plugin(models.Model): """Some subcontent that can be added to a given page""" class Meta: ordering = ['ordering'] name = models.CharField(max_length=32, primary_key=True) div_id = models.CharField(default='rightcol', max_length=32) published = models.BooleanField(default=True, help_text=_("If this is not checked, it is not displayed on the page.")) ordering = models.IntegerField(default=1, help_text=_("plugins are sorted with this number in ascending order")) content = models.TextField(blank=True) registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page.")) def __unicode__(self): return u"%s -- %s" % (self.name, self.div_id) 

Обновление: ясно, что символ не-ascii не рекомендуется в URL-адресе. Это причина моей проблемы, и я изменил это.

Кто-нибудь знает, что используется администратором Django для создания URL-адреса объекта. Я предполагаю, что это первичный ключ. Это правильно? есть ли способ заставить Django использовать что-то еще и безопасно восстановить объект?

4 Solutions collect form web for “ошибка unicode при сохранении объекта в django admin”

Я уверен, что ваша база данных, вероятно, использует кодировку latin1. Django предполагает, что вы все настроены как unicode (utf8).

Чтобы проверить это, зайдите в оболочку MySQL и введите:

 mysql> show variables like 'char%'; 

Если вы видите кучу latin1 (или любую другую кодировку, которая не является utf8, кроме двоичного), вам нужно будет сделать это: откройте my.cnf и найдите раздел [mysqld] . Убедитесь, что после tmpdir = /tmp вас есть следующие строки:

 default-character-set=utf8 collation_server=utf8_unicode_ci character_set_server=utf8 skip-external-locking skip-character-set-client-handshake по default-character-set=utf8 collation_server=utf8_unicode_ci character_set_server=utf8 skip-external-locking skip-character-set-client-handshake 

Перезагрузите сервер.

Вам придется воссоздать или вручную отредактировать кодировку всех баз данных и таблицы, которые вы имеете, изменение my.cnf влияет только на базы данных, которые будут созданы.

Надеюсь, я помог.

Изменить: Кстати, на какой версии Django вы работаете? Похоже, это была ошибка, которая была исправлена ​​на 1.1: http://code.djangoproject.com/ticket/10267

в вашей модели вы пытались поставить

 class Model(models.Model): def __unicode__(self): return self.name ## having a model object named "name" 

Не уверен, что это ответ, который вы ищете, но попробовали?

Эта ссылка спасла мой день
вам нужно добавить поддержку unicode для своего администратора в ваши models.py :

 class MyModel (models.Model): some_field = models.CharField(max_length=1000) def __unicode__(self): return u'%s'%(self.some_field) 

могут возникнуть другие проблемы, такие как: ваша системная кодировка не является utf8 , ваша кодировка базы данных не является utf8 и … которая упоминается в приведенной ссылке!

Теперь я использую идентификатор по умолчанию как первичный ключ для каждого класса моей модели. Как следствие, у меня нет запрещенных символов в URL-адресе при доступе к объектам с сайта администратора.

Я рекомендую хранить идентификатор по умолчанию в качестве первичного ключа в большинстве случаев

  • Панды и юникод
  • UnicodeEncodeError: кодек ascii не может кодировать символ
  • как работать с unicode в mako?
  • Есть ли простой способ сделать работу юникода в python?
  • Как экспортировать DataFrame в Html с помощью кодировки utf-8?
  • Ошибка при установке и использовании numpy
  • Ошибка кодирования Unicode Python
  • как декодировать символ un unicode в python?
  •  
    Interesting Posts for Van-Lav

    Веб-сервисы с Google App Engine

    Повторное использование кода из разных IPython-ноутбуков

    Переменные переменных переменных вложенных функций Python

    Официальный установщик Python отсутствует python27.dll

    Использование dateutil.parser для анализа даты на другом языке

    Numpy Dot Продукт двух двухмерных массивов в numpy для получения 3-мерного массива

    make np.vectorize возвращает скалярное значение на скалярном входе

    Программа Cython с массивами numpy не допускает вложенных входов (только принимает длину 1 массив), как исправить?

    Как нарисовать случайные плоскости

    Преобразование изображения в матрицу в python

    не может подключиться к базе данных 64-битной MsAccess с 64-битной ошибкой драйвера Python 3.6.ODBC

    Почему написание _ в интерпретаторе Python возвращает True?

    Что такое эквивалент Python «perl -V»

    Преобразование массива Numpy в массив OpenCV

    BeautifulSoup – findВсе не в пределах определенного тега

    Python - лучший язык программирования в мире.