【问题标题】:Folium map not displaying in Django webpage叶地图未显示在 Django 网页中
【发布时间】:2019-01-28 23:20:33
【问题描述】:

对 Django 非常陌生(以及一般的 Web 开发),所以提前道歉。

我正在尝试在 Django 网页中显示我的 Folium 地图,但我似乎无法弄清楚为什么最终会出现空白屏幕。我在 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>

它是空白的。我需要 iframe 吗?我应该运行允许传单地图的脚本源吗?既然我需要一个来源,我该如何设置它?我是否必须在本地将地图另存为 html 文件,因为我正在尝试将其部署以便其他人可以使用它,如果是每次生成地图时都必须在本地保存的情况,我'不确定人们是否会喜欢把他们的内存或文件弄得乱七八糟,因为这个工具会被非常频繁地使用。

我是否缺少显示地图的内容?我对其他映射库持开放态度,但 Folium 是迄今为止我遇到的最简单和最具互动性的。

【问题讨论】:

标签: python django folium


【解决方案1】:

在您的代码中,map 是一个 folium.Map 对象,还不是带有 html/javascript 的字符串。你需要先渲染它。通常,这会创建一个完整的 HTML 页面。对于 Jupyter 笔记本,此 HTML 页面被放入 iframe。所以有两种选择:

如果您不想或不需要将地图放入模板中,可以直接渲染页面:m.get_root().render() 返回一个带有完整 HTML/JS 页面的字符串。

如果您想将地图嵌入到模板中,您可以使用 iframe: m._repr_html_() 返回一个带有 HTML/JS 页面的 iframe 的字符串。

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2014-02-07
    • 2018-02-20
    相关资源
    最近更新 更多