当前位置:  开发笔记 > 编程语言 > 正文

TypeError强制转换为Unicode:需要字符串或缓冲区

如何解决《TypeError强制转换为Unicode:需要字符串或缓冲区》经验,为你挑选了1个好方法。

在Django项目中,我试图将url传递给want实例.评论适用于旺旺.我一直试图找出这个错误,但我很难过.

这个功能:

     def comment_email(request, comment, **kwargs):
         want = get_object_or_404(Want, id=comment.object_pk)
         url = want.get_absolute_url
         print url

抛出这个错误

Environment:

Request Method: POST
Request URL: http://localhost:8000/comments/post/
Django Version: 1.2.3
Python Version: 2.7.0
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.admin',
 'django.contrib.comments',
 'django.contrib.markup',
 'src',
 'lib.tagging',
 'lib.markdown',
 'lib.avatar',
 'ajaxcomments',
 'south']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  100.                     response = callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ajaxcomments/utils.py" in wrapped
  57.         return func(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  76.                     response = view_func(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/views/decorators/http.py" in inner
  37.             return func(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/comments/views/comments.py" in post_comment
  127.         request = request
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/dispatch/dispatcher.py" in send
  162.             response = receiver(signal=self, sender=sender, **named)
File "/Users/emilepetrone/code/apprentice2/src/utils.py" in comment_email
  24.   print url
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/base.py" in __repr__
  344.             u = unicode(self)

Exception Type: TypeError at /comments/post/
Exception Value: coercing to Unicode: need string or buffer, Want found

这是旺旺模型:

     class Want(models.Model):

       pub_date =         models.DateTimeField(default=datetime.now,auto_now_add=True,db_index=True)
       body = models.TextField(default='',max_length=1000)
       body_html = models.TextField(editable=False, blank=True)

       #Metadata
       mentee = models.ForeignKey(User)
       points = models.IntegerField(default=3)
       enable_comments = models.BooleanField(default=True)
       featured = models.BooleanField(default=False)

       #Tags
       tags = TagField(help_text="Autocomplete")

       def get_tags(self):
         return Tag.objects.get_for_object(self)      

       class Meta:
         ordering = ['-pub_date']

       def __unicode__(self):
         return self

       def save(self):
         self.body_html = markdown(self.body)
         super(Want, self).save()

       def get_absolute_url(self):
         return ( { 'object_id': self.id })
       get_absolute_url = models.permalink(get_absolute_url)

谢谢您的帮助!



1> mjhm..:

我认为问题是

def __unicode__(self):
    return self

它应该返回一个unicode字符串而不是"Want"实例.我不确定你想要的是什么 - 也许是"self.id"

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有