Карта фолиума не отображается на веб-странице Django - PullRequest
0 голосов
/ 29 января 2019

Очень плохо знаком с Django (и веб-разработкой в ​​целом), поэтому заранее извиняюсь.

Я пытаюсь отобразить свою карту Folium на веб-странице Django, но не могу понять, почемуЯ получаю пустой экран.Я искал другие сообщения в SO, но все они просят либо всплывающие окна специально или отображение в Jupyter.

views.py

from django.shortcuts import render, redirect, render_to_response
from django.http import HttpResponse
from django.template.loader import get_template
from django.template.context import RequestContext
import pandas as pd
import folium

def folium_map(request):
    coords = [(40.7831, -73.9712), (40.6782, -73.9412), (40.7282, -73.7949)]
    map = folium.Map(location=[40.7118, -74.0131], zoom_start=12)
    for coord in coords:
        folium.Marker(location=[coord[0], coord[1]]).add_to(map)

    context = {'map': map}
    return render(request, 'template.html', context)

Затем в моем файле template.html я просто пытаюсь вставить карту в тег div:

<div> {{ map|safe }} </div>

И она пустая.Нужен ли мне Ифраме?Должен ли быть запущен источник сценариев, позволяющий создавать листовки?Как мне его настроить, так как мне нужен источник?Должен ли я сохранять карту в виде html-файла локально, потому что я пытаюсь развернуть его, чтобы другие люди могли использовать его, и если это так, когда каждый раз, когда карта генерируется, она должна быть сохранена локально, яЯ не уверен, что люди оценят беспорядок в памяти и файлах, так как этот инструмент будет использоваться очень часто.

Я что-то упускаю для отображения карты?Я открыт для других картографических библиотек, но Folium, безусловно, самый простой и интерактивный, с которым я когда-либо сталкивался.

1 Ответ

0 голосов
/ 04 февраля 2019

В вашем коде map - это объект folium.Map, но не строка с html / javascript.Вы должны сделать это в первую очередь.Обычно это создает одну полную HTML-страницу.Для ноутбуков Jupyter эта HTML-страница помещается в iframe.Таким образом, есть два варианта:

Если вы не хотите или вам нужно поместить карту в шаблон, вы можете напрямую отобразить страницу: m.get_root().render() возвращает строку с полной страницей HTML / JS.

Если вы хотите встроить карту в шаблон, вы можете использовать iframe: m._repr_html_() возвращает строку с iframe со страницей HTML / JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...