这可能是一个非常明显的问题。我正在使用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
,一切似乎都很好。
答案 0 :(得分:3)
您将列表传递给HttpResponse
,列表是迭代器。当您这样做时,迭代器被视为要写入浏览器的字符串序列,不是作为变成字符串的对象。来自HttpResponse()
documentation:
最后,你可以传递HttpResponse一个迭代器而不是字符串。如果使用这种技术,迭代器应该返回字符串。
内容应该是迭代器或字符串。如果它是迭代器,它应该返回字符串,并且这些字符串将连接在一起以形成响应的内容。如果它不是迭代器或字符串,则在访问时将转换为字符串。
将列表转换为字符串 first 然后将其发布:
HttpResponse(str(QueryList))