我正在尝试将位置转换为要存储的地理编码以用于列表。我正在使用第三方API,该API在使用城市/州或邮政编码等位置后返回JSON。
我想:
过滤仅在美国的响应(国家/地区以JSON返回)
获取经/纬度数据并将其保存到列表模型中
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 lat
和geometry long
合并为一项,另存为location
答案 0 :(得分:1)
像这样吗?
locations = get_locations(location)
results = locations['result']
for result in results:
print(result['geometry'])