我正在使用夹层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方法,它将自动删除blogID,并将其表示为blog_id。
最佳答案
嗯,所以现在使用代码,很可能是request.user.username
出现了问题,不幸的是,夹层代码假定它正在接收ascii对象(stacktrace中的unicode(self)
在做什么)并且正在对其进行“双重编码”……grrr!
我会以相同的方式调用您的方法,但是要这样做:
call_command(
'import_blogger_hs',
mezzanine_user=request.user.username.decode('utf-8'),
blog_id=blog_id)
这样可以解决问题吗?