Я пытаюсь использовать фолиевые карты в Django.
Из views.py map_ html передается на sample_map. html в качестве переменной контекста.
Внутри sample_map. html, я пытаюсь отобразить map_ html в iFrame. (Я должен использовать iFrame, так как фолио возвращается полностью HTML)
Проблема: Карта обрабатывается, но за пределами iFrame.
Я могу без каких-либо проблем визуализировать некоторые простые html как <html><body>It works</body></html>
в iframe.
views.py
import folium
def show_map(request):
m = folium.Map([17.3850, 78.4867], zoom_start=10)
map_html = m.get_root().render()
context = {'map_html': map_html}
return render(request, 'sample_map.html', context)
sample_map. html
<!DOCTYPE html>
<html lang="en">
<body>
<iframe id="foo"></iframe>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" .. ></script>
<script>
$(document).ready(function() {
var iframe = document.getElementById('foo'),
iframedoc = iframe.contentDocument || iframe.contentWindow.document;
// iframedoc.body.innerHTML = "<html><body>Content gets rendered within iframe as expected</body></html>"
iframedoc.body.innerHTML = "{{map_html|safe}}" // content gets rendered outside the iframe
});
</script>
</body>
</html>
Обновление № 1: Я получил его работать с использованием srcdo c вместо установки с помощью javascript. <iframe id="foo" srcdoc='{{map_html|safe}}'></iframe>
Но все же я хотел бы понять, что происходит не так в подходе javascript.