2013-10-09 1 views
1

Я использую mezzanine cms. Когда я лом данные из Blogspot я получил эту ошибкуКак решить UnicodeDecodeError в мезонине?

blog_id: sanavitastudio 
Traceback (most recent call last): 
    File "/home/nyros/hs/git_br/2013/Oct-9/healersource/apps/blog_hs/forms.py", line 226, in save 
    blog_id=blog_id) 
    File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 150, in call_command 
    return klass.execute(*args, **defaults) 
    File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
    output = self.handle(*args, **options) 
    File "/home/nyros/hs/git_br/mezzanine/mezzanine/blog/management/base.py", line 172, in handle 
    post, created = BlogPost.objects.get_or_create(**initial) 
    File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/db/models/manager.py", line 134, in get_or_create 
    return self.get_query_set().get_or_create(**kwargs) 
    File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/db/models/query.py", line 452, in get_or_create 
    obj.save(force_insert=True, using=self.db) 
    File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 221, in save 
    super(Displayable, self).save(*args, **kwargs) 
    File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 77, in save 
    super(Slugged, self).save(*args, **kwargs) 
    File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 46, in save 
    super(SiteRelated, self).save(*args, **kwargs) 
    File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 116, in save 
    self.description = strip_tags(self.description_from_content()) 
    File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 146, in description_from_content 
    description = unicode(self) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 5: ordinal not in range(128) 

Код:

  import xmltest 
      blog_id = xmltest.blogname(self.cleaned_data['blog_id']) 

      print(type(blog_id)) 
      call_command(
       'import_blogger_hs', 
       mezzanine_user=request.user.username, 
       blog_id=blog_id) 
      return False 

И название_блог методы Если вы даете название_блог он будет автоматически ломом blogID и представлены как blog_id.

+1

Можем ли мы увидеть ваш код? В частности: 'healersource/apps/blog_hs/forms.py'? Самый простой способ решить это может состоять в том, чтобы поместить все ваши строки в строки '... # python2problems – ranman

+0

Спасибо за ответ. См. Мой отредактированный код. – dhana

ответ

1

Ах, так что теперь с кодом проблема, скорее всего, с request.user.username, к сожалению, код мезонин предполагает, что получает объект ASCii (что unicode(self) в StackTrace делает) и «двойное кодирование» это ... гррр!

Я бы назвал ваш метод так же, но сделать это:

call_command(
    'import_blogger_hs', 
    mezzanine_user=request.user.username.decode('utf-8'), 
    blog_id=blog_id) 

ли это, исправить проблему?

+0

Спасибо. Я поменял свой конец, как вы сказали. Но я получил эту ошибку DatabaseError: слишком длинное значение для символа типа (500). – dhana

+0

Кажется, вам может понадобиться другой тип базы данных для значения, которое вы пытаетесь сохранить? Это происходит из того же места? – ranman

+0

Спасибо за ответ. см. эту ссылку http://stackoverflow.com/questions/19263478/database-range-error-in-django. Я отправил еще один вопрос о ошибке базы данных. – dhana