Вывод словарей с помощью 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:

  1. I'm getting all the addresses and ID's from my users.
  2. 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>
Вернуться на верх