如何遍历JSON数据以了解Django

时间:2019-05-14 15:44:47

标签: json django

我正在尝试将位置转换为要存储的地理编码以用于列表。我正在使用第三方API,该API在使用城市/州或邮政编码等位置后返回JSON。

我想:

  1. 过滤仅在美国的响应(国家/地区以JSON返回)

  2. 获取经/纬度数据并将其保存到列表模型中

services.py

import requests

def get_location(location):
    url = 'https://api.opencagedata.com/geocode/v1/json'
    params = {'q': location, 'key': '***', 'language': 'en', 'pretty': 1}
    r = requests.get(url, params=params)
    locations = r.json()
    return locations

这使我得到诸如以下的响应:

{
  "documentation": "https://opencagedata.com/api",
  ...
  "results": [
    {
      ...
      "components": {
        ...
        "_type": "city",
        "city": "Miami",
        ...
        "country": "USA",
        "country_code": "us",
        "state": "Florida",
        "state_code": "FL"
      },
      ...
      "formatted": "Miami, FL, United States of America",
      "geometry": {
        "lat": 25.7742658,
        "lng": -80.1936589
      }
    },
    ...
}

**编辑**

我需要对此问题进行一些细化。到目前为止,我已经回答的是这里的位置:

views.py:

我从用户提交的表单中获取了一个字符串,该字符串可以是城市州或邮政编码。我想做的就是用此字符串查询API,返回一个单独的变量,该变量将是geometry lat & long的组合。

views.py

def post(request):
    user = request.user
    if request.method == 'GET':
        form = postListing()
    elif request.method == 'POST':
        form = postListing(request.POST)
        if form.is_valid():
           ...
           title = form.cleaned_data['title']
           location = ?

           newPost = Listing.objects.create(title=title, location=location...)

我正在努力的是:<​​/ p>

  • 删除所有非美国搜索结果
  • 获取优化数据的第一个结果
  • geometry latgeometry long合并为一项,另存为location
  • 我只想将第一个有效结果存储到新帖子中,而不是为每个有效结果创建一个帖子

1 个答案:

答案 0 :(得分:1)

像这样吗?

locations = get_locations(location)
results = locations['result']
for result in results:
    print(result['geometry'])