2016-03-21 159 views
3

マップを作成するこのFoliumというプラグインを使用しています。マップは.htmlとして作成され、マップを更新するたびにhtmlが再生成されます。ですから地図と私のnavbarと他のものを同じページに表示するにはmap.htmlをiframeケージの中に置く必要があると思います。Flaskを使用してローカルのHTMLページを埋め込む

map1 = folium.Map(location=[45.5, -73.61], width="100%", height="100%") 
map1.save('./maps/map.html') 

そして、私はこのようにそれをiframeing試してみました:

マップは、このように作成されます

<iframe src="/maps/map.html"></iframe> 

をしかし、私は404 error

誰か昨日、私はそれのためのエンドポイントを構築することを示唆し得ますこのように:

@app.route('/http://127.0.0.1:4995/maps/map') 
def show_map(): 
return flask.send_file('/maps/map.html') 

しかし、私は404エラーを取得し続ける

答えて

6

あなたのルートが正しく定義されていません。あなたが書いたように、http://yourserver/http://127.0.0.1:4995/maps/mapのルートを定義したのですが、あなたが望むと思ったのはhttp://yourserver/maps/map.htmlでした。これを実現するために、あなたは自動的にあなたが定義する任意の経路の最初にサーバのアドレス(http://127.0.0.1:4995)を付加します以下

@app.route('/maps/map.html') 
def show_map(): 
    return flask.send_file('/maps/map.html') 

フラスコを使用したいと思うでしょう。

また、HTMLのテンプレートでは、url_forを使用してマップのURLを取得して、ルートを変更してテンプレートを変更する必要がなくなります。

<iframe src="{{ url_for('show_map') }}"></iframe> 
+0

お世話になりましたね。しかし、私はまだそれを働かせることはできません。私は最初のエンドポイント '@app.route( '/')'で終わり、 'return render_template( 'index.html')'で終わり、 '@ app.route( '/ data/map.html')' 'send send_file( 'data/plot.html')'を返します。しかし、私が '127.0.0.1 - [28/Feb/2018 15:03:48]" GET/HTTP/1.1 "を取得したページをロードすると、200 - 127.0.0.1 - [28/Feb/2018 15:03 :48] "GET /data/plot.html HTTP/1.1" 404 -' – lorenzori

+0

これは 'static_folder = 'data''を' Flask(...) '初期化に追加して動作しました! – lorenzori