【问题标题】:coercing to Unicode: need string or buffer, NoneType found强制转换为 Unicode:需要字符串或缓冲区,找到 NoneType
【发布时间】:2012-06-06 17:17:24
【问题描述】:

我正在向视图发出 Ajax 请求,如下所示:

def all_json_models(request):
    data = {}
    try:

    isp = request.GET['status']
    present_isp =  Priority.objects.filter(ispname = isp)
    isp_count = MultiWAN.objects.all()

  #  data['latest_no_rules']  =   latest_no_rules
    #data['present_isp']  = present_isp
    data['isp_count'] = isp_count

    return HttpResponse(simplejson.dumps(data))   

我的models.py 就像

class MultiWAN(models.Model):

    isp_name = models.CharField(max_length=10)
    description  = models.TextField(null=True)
    ip_address   = models.IPAddressField(null=True)
    subnet       = models.IPAddressField(null=True)
    gateway      = models.IPAddressField(null=True)
    nameserver   = models.ForeignKey('NameServer')
    weight       = models.IntegerField(null=False)
    interface    = models.CharField(max_length=5) 
    def __unicode__(self):
        """
        This function is to return the values we required.
        Arguments:
        - `self`:
        """
      #  return u'%s ' % (self.isp_name)


class NameServer(models.Model):
    """  A Isp can have more than one nameserver so far we are declearing a seperate table 
    """         
    name = models.IPAddressField(null=False)    




class Priority(models.Model):  
    priority =  models.IntegerField(null = True)
    ispname = models.ForeignKey('MultiWAN')
    rule = models.CharField(max_length=5,null=False)
    From  =    models.IPAddressField(null=True)
    To = models.IPAddressField(null=True)
    def __unicode__(self):
                      return u'%s ' % (self.priority)

发出请求时出现错误:

"coercing to Unicode: need string or buffer, NoneType found"

我在这里做错了什么?

【问题讨论】:

  • 请显示 a) 有效的 Python 代码,正确缩进; b) 你得到的回溯。

标签: django json django-models


【解决方案1】:

如果没有完整的回溯,就很难判断(因为它提供了有关在代码中引发异常的位置的信息)。

错误信息“coercing to Unicode: need string or buffer, NoneType found”意味着,在某些时候,django 尝试将某些内容转换为 unicode 并期望一个字符串,但收到了None。这意味着您要么调用传递 None 而不是字符串的函数,要么其中一个方法返回 None 而不是字符串。

在您向我们展示的代码中,MultiWAN.__unicode__ 似乎定义不明确。也许错误源于此?

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多