Вывод словарей с помощью Django
Мне нужно создать словарь с ID моих пользователей, а также с координатами геокодирования API от Google!
(ID не имеет значения для API, но имеет значение для меня, чтобы я мог связать каждое местоположение с его собственными данными)
Вот шаблон словаря, который мне нужно передать моему js скрипту:
var markersOnMap = [
{
id: {
id: 1
},
LatLng: [{
lat: 19.392856,
lng: -99.162641
}]
},
{
id: {
id: 2
},
LatLng: [{
lat: 19.393686,
lng: -99.170752
}]
},
]
Это скрипт views.py:
- I'm getting all the addresses and ID's from my users.
- The API processes the address and returns 2 coordinates: lat and lng, is there a way or a better way to return to the js script each block of data containing the id with it's coordinates and so on per user as i mentioned above?
def test(request):
# ADDRESSES AND ID'S FROM ALL USERS
data = list(UserProfile.objects.values('address', 'id'))
# GOOGLE API
API_KEY = 'MyApiKey'
params = {
'key': API_KEY,
'address': data
}
base_url = "https://maps.googleapis.com/maps/api/geocode/json?"
response = requests.get(base_url, params=params).json()
response.keys()
if response['status'] == 'OK':
geometry = response['results'][0]['geometry']
lat = geometry['location']['lat']
lng = geometry['location']['lng']
context = {
}
return render(request, "test.html", context)
Я буду вечно благодарен, если кто-то знает, как это решить!
Мне неясно, есть ли у вас проблемы с форматированием данных (похоже, что нет) или вы задаетесь вопросом, как получить их из кода бэкенда во фронтенд. Делать это через API - один из способов, но иногда ваши потребности очень просты, и вы просто хотите, чтобы JSON передавался скрипту без лишней работы и шаблонов API. Я использовал этот шаблон с большим успехом:
# views.py
import json
. . .
def test(request):
. . .
# serialize your payload as a json string and make it available
# in the template context
context["payload"] = json.dumps(payload)
return render(request, "test.html", context)
{# test.html #}
{# use the |safe filter to indicate it should be rendered unescaped into the HTML #}
<div id="payload" hidden>{{ payload|safe }}</div>
<script>
const payload = JSON.parse(document.getElementById('payload').textContent)
console.log(payload)
</script>