<p>你把发生的事情误诊了。<code>requests</code>正在返回正确的词典。但是您正在将字典传递给<code>HttpResponse()</code>,而不进行任何进一步的处理。但是,<code>HttpResponse()</code>未设置为处理字典。你知道吗</p>
<p>发生的情况是<code>HttpResponse()</code>接受一个<em>iterable</em>,并将iterable中的每个值作为一个字符串。实际上,您告诉Django只向客户端发送<strong>串接的键。从<a href="https://docs.djangoproject.com/en/stable/ref/request-response/#django.http.HttpResponse.__init__" rel="nofollow noreferrer">^{<cd2>} documentation</a>:</p>
<blockquote>
<p><strong><code>content</code></strong> should be an iterator or a string. If it’s an iterator, it should return strings, and those strings will be joined together to form the content of the response.</p>
</blockquote>
<p>从<a href="https://docs.python.org/3/library/stdtypes.html#dict" rel="nofollow noreferrer">^{<cd6>} documentation</a>开始:</p>
<blockquote>
<p><strong><code>iter(d)</code></strong><br/>
Return an iterator over the keys of the dictionary. This is a shortcut for <code>iter(d.keys())</code>.</p>
</blockquote>
<p>如果要发送JSON数据,请使用<a href="https://docs.djangoproject.com/en/stable/ref/request-response/#jsonresponse-objects" rel="nofollow noreferrer">^{<cd7>} object</a>。它被设置为正确编码Python对象:</p>
<pre><code>from django.http import JSONResponse
import requests
def say_something(request):
resp = requests.get('http://127.0.0.1:9501/polls/test/')
return JSONResponse(resp.json())
</code></pre>
<p>或者不必费心解码和重新编码,只需传递原始响应数据:</p>
<pre><code>from django.http import HttpResponse
import requests
def say_something(request):
resp = requests.get('http://127.0.0.1:9501/polls/test/')
return HttpResponse(resp.text, resp.headers['content-type'])
</code></pre>
<p>注意:我删除了类和<code>staticmethod</code>装饰器;当没有共享状态时,在类中包装静态视图函数没有什么意义。使用模块来创建名称空间。你知道吗</p>