0

これは非常に明白な質問かもしれません。私return HttpResponse()はデバッグしている変数についていくつかのアイデアを得るために使用しており、基本的にクエリリストを作成していますが、Django でリストに追加すると、Python とは異なる動作をし、これが表示の問題です。

ここジャンゴで

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')

これらの 2 つのオプションは、次のようにカンマで区切られると予想されます[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 に答える