python - 如何解决夹层中的 UnicodeDecodeError?

标签 python django mezzanine

我正在使用夹层cms。当我从 blogspot 中删除数据时,出现此错误

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

还有 blogname 方法,如果您提供 blogname,它会自动废弃 blogID 并表示为 blog_id。

最佳答案

啊,现在的代码问题很可能是 request.user.username 不幸的是,夹层代码假设它正在接收一个 ascii 对象(什么 unicode(self) code> 在堆栈跟踪中正在做)并且是“双重编码”它... grrr!

我会以同样的方式调用你的方法,但这样做:

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

这能解决问题吗?

关于python - 如何解决夹层中的 UnicodeDecodeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19262960/

相关文章:

python - 通过python为选定的mysql表创建图表/统计信息

python - Django REST Framework 中的私有(private)和公共(public)字段

django - 为 Django 安装 MySQL-python

python - 为什么我不能使用 python 建立到 rabbitMQ 的连接?

python - 使用 pip3 卸载 Python 包

python - OSError at/admin/pages/richtextpage/3/[Errno 13] Permission denied : '/static'

django - 夹层404和500错误模板未覆盖

django - 设置夹层内联日期编辑器的年份范围

python - 内存中 CSV 下载文件名

mysql - 如何在设定的到期日期后隐藏数据库条目?