我试图在Django中使用get查询从API中获取数据。我得到响应HTML-代码,其中也包含了JSON。这似乎是内容类型头不工作的原因,这就是为什么我得到HTML代码作为响应。
我测试了如何使用邮递员进行查询:
这里是我在views.py的代码,我不希望它在网站上运行,所以我不会返回/呈现任何
def json_search(request):
query = request.GET.get('query')
final_url = urllib2.Request('http://APIwebsite.com', None, {'Content-Type':'text/json'})
base64string = base64.encodestring('%s:%s' % ('username', 'password')).replace('\n', '')
final_url.add_header("Authorization", "Basic %s" % base64string)
json_obj = urllib2.urlopen(final_url)
decoded_data = json_obj.read()
print decoded_data作为响应,我得到带有CSS和JSON-数据的HTML页面代码。我如何才能只获得JSON数据?
发布于 2016-04-21 09:49:56
HTML页面有一个指向页面的链接,其中只有JSON代码.所以,我对那个页面进行了查询,它起作用了。不过,我也使用Javascript进行了同样的查询,并且使用了正确的内容类型标头。
发布于 2016-04-21 09:55:02
您可以编写实用程序方法,并在其中传递参数,例如
class JsonResponse(HttpResponse):
'''
Handling content type for json no more to add content-type.
'''
def __init__(self, content={}, status=None,content_type='application/json'):
super(JsonResponse, self).__init__(
json.dumps(content),
status=status, content_type=content_type)之后,只需将数据传递给上面的方法,如下所示
response_json.update({"message": "success"})
return JsonResponse(response_json)这也许能解决你的问题。
发布于 2016-04-21 09:13:45
试着用,
json.loads(request.body)Json响应可以用这种方式处理。
https://stackoverflow.com/questions/36764804
复制相似问题