首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Django中的Python从API中获取JSON数据

用Django中的Python从API中获取JSON数据
EN

Stack Overflow用户
提问于 2016-04-21 09:05:07
回答 3查看 1.9K关注 0票数 0

我试图在Django中使用get查询从API中获取数据。我得到响应HTML-代码,其中也包含了JSON。这似乎是内容类型头不工作的原因,这就是为什么我得到HTML代码作为响应。

我测试了如何使用邮递员进行查询:

  • 当我根本没有内容类型头时,我得到了和现在一样的HTML代码。
  • 当我将内容类型标头作为text/json时,它使用JSON-data进行响应。

这里是我在views.py的代码,我不希望它在网站上运行,所以我不会返回/呈现任何

代码语言:javascript
运行
复制
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数据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-21 09:49:56

HTML页面有一个指向页面的链接,其中只有JSON代码.所以,我对那个页面进行了查询,它起作用了。不过,我也使用Javascript进行了同样的查询,并且使用了正确的内容类型标头。

票数 0
EN

Stack Overflow用户

发布于 2016-04-21 09:55:02

您可以编写实用程序方法,并在其中传递参数,例如

代码语言:javascript
运行
复制
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)

之后,只需将数据传递给上面的方法,如下所示

代码语言:javascript
运行
复制
response_json.update({"message": "success"})
return JsonResponse(response_json)

这也许能解决你的问题。

票数 1
EN

Stack Overflow用户

发布于 2016-04-21 09:13:45

试着用,

代码语言:javascript
运行
复制
json.loads(request.body)

Json响应可以用这种方式处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36764804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档