Интеграция с Django и Folium - PullRequest
0 голосов
/ 24 мая 2018

Новичок Django здесь: моя цель - интегрировать Folium в html-страницу.так что у меня на данный момент:

polls / views.py

def show_map(request):  
    #creation of map comes here + business logic
    m = folium.Map([51.5, -0.25], zoom_start=10)
    test = folium.Html('<b>Hello world</b>', script=True)
    popup = folium.Popup(test, max_width=2650)
    folium.RegularPolygonMarker(location=[51.5, -0.25], popup=popup).add_to(m)

    context = {'my_map': m}

    return render(request, 'polls/show_folium_map.html', context)

polls / urls.py

urlpatterns = [   
       path('show_my_map', views.show_map, name='show_map'),

]

и show_folium_map.html

 <h1>map result comes here</h1>
 {{ my_map }}

Проблема заключается в том, что я получаю значение 'to_string' карты (обещаю, что я видел, чтоприход).Итак, как я могу интегрировать карту таким образом, чтобы я действительно мог видеть карту и определять ее размер?

enter image description here

1 Ответ

0 голосов
/ 14 января 2019

Вы можете получить html в виде строки, запустив рендеринг на (внутреннем) родительском элементе Map:

m = folium.Map()
html: str = m.get_root().render()

Обратите внимание, что это возвращает полную HTML-страницу, поэтому вам может потребоватьсяэто в iframe.

В качестве альтернативы, вы можете визуализировать части головы, тела и сценария отдельно.Таким образом, вы можете разместить каждую часть на своей странице, где она принадлежит, и вам не нужен iframe:

m = folium.Map()
html_head: str = m.get_root().header.render()
html_body: str = m.get_root().html.render()
html_script: str = m.get_root().script.render()
...