Django处理列表的方式与python不同?输出由HttpResponse Man?

时间:2013-09-21 13:24:08

标签: python django httpresponse

这可能是一个非常明显的问题。我正在使用return HttpResponse()来了解我正在调试的变量,基本上我正在构建一个查询列表,但当我附加到Django中的列表时,它的行为与Python的行为不同,我不喜欢不知道这是否是显示问题。

这里是Django

QueryList = []
for item in spltfieldvalues:
    strpitem = item.strip('[],')
    queryitem = Q(fieldname+'__contains='+strpitem)
    QueryList.append(queryitem)

应该以逗号分隔列表。但是当我使用HttpResponse输出时,我得到以下内容:

AND: MyAgePref__contains=u'_U18')(AND: MyAgePref__contains=u'_O76')

我期望这两个选项以逗号分隔,如[Q(A), Q(B)]

只是尝试添加字符串,即。QueryList.append('A')在输出上给出AA,没有逗号分隔。但是在python控制台上,它工作正常,我得到['A','A']HttpResponse是否输出了输出?它很奇怪,因为我用它来查看JSON,一切似乎都很好。

1 个答案:

答案 0 :(得分:3)

您将列表传递给HttpResponse,列表是迭代器。当您这样做时,迭代器被视为要写入浏览器的字符串序列,不是作为变成字符串的对象。来自HttpResponse() documentation

  

最后,你可以传递HttpResponse一个迭代器而不是字符串。如果使用这种技术,迭代器应该返回字符串。

further down the page

  

内容应该是迭代器或字符串。如果它是迭代器,它应该返回字符串,并且这些字符串将连接在一起以形成响应的内容。如果它不是迭代器或字符串,则在访问时将转换为字符串。

将列表转换为字符串 first 然后将其发布:

HttpResponse(str(QueryList))