Django - загрузить листок с контекстными данными - PullRequest
0 голосов
/ 27 декабря 2018

Я работал в приложении geodjango, чтобы включить карту для функции поиска в пространственную таблицу, учась на уроках, и до сих пор я знаю способ загрузки сериализованных данных в листовки путем создания представления на основе функции, назначающегоURL-адрес и импортируя этот URL-адрес как переменную GeoJSON.AJAX, я пытался изменить этот метод, чтобы затем попытаться выяснить способ передачи данных в моей функции поиска:

Файл просмотров:

def map_dide(request):
    return render(request, 'b_dide_uv/map_did.html')

def info_uvs(request):
    uv = serialize('geojson', D_uvs.objects.all())
    return HttpResponse(uv, content_type='json')

Шаблон:

 function uvs(map,options){
    var dataset = new L.GeoJSON.AJAX("{% url 'info_uvs' %}",{

    });
    dataset.addTo(map);
  }

Я пытался вставить сериализацию и передать ее в качестве контекста в функцию map_dide:

def map_dide(request):
    uv = serialize('geojson', D_uvs.objects.all())
    return render(request, 'b_dideco_uv/mapa_did.html', {'uv':uv})

, но когда я его назначаюв javascript в шаблоне это дает мне ошибку, пока я пытался:

  var uv_data = JSON.parse('{{uv|safe}}')
  function uvs(map,options){
    var dataset = new L.GeoJSON.AJAX(uv_data,{
    });
    dataset.addTo(map);
  }

но я получил «SyntaxError: missing) after list list» в консоли

Я такжепробовал L.geoJson и функцию L.GeoJSON, но это тот же результат

какие есть другие методы для вставки сериализованных данных в шаблон?, кроме отдельной функции, в случае поискаЯ полагаю, что функция должна быть внутри той же функции, чтобы передать результат запроса, но, похоже, javascript не распознает эти данные

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2019

кажется, что я наконец-то заставил его работать, выдавая "crs" из geojson

views.py

feature:def mapa_dideco(request):
    uv_ini = serialize('geojson', D_uvs.objects.all())
    uv = json.loads(uv_ini)
    uv.pop('crs', None)
    uv = json.dumps(uv)
    return render(request, 'b_dideco_uv/mapa_did.html', {'uv':uv})

остальное остается прежним

0 голосов
/ 27 декабря 2018

Я решил проблему, установив библиотеку django-geojson , изменил способ установки переменной данных в коде листовки javascript:

views.py

def map_dide(request):
    uv = D_uvs.objects.all()
    return render(request, 'b_dideco_uv/mapa_did.html', {'uv':uv})

html

 var uv_data = {{ uv|geojsonfeature|safe }};
  function uvs(map,options){
    new L.geoJson(uv_data).addTo(map);
  }
...