0

这可能是一个非常明显的问题。我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一切似乎都很好。

4

1 回答 1

3

您正在将一个列表传递给HttpResponse,而一个列表是一个迭代器。当您这样做时,迭代器被视为要写入浏览器的字符串序列,而不是要转换为字符串的对象。从HttpResponse()文档中:

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

并且,在页面下方

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

先把列表转成字符串再发布:

HttpResponse(str(QueryList))
于 2013-09-21T13:29:18.750 回答