私はFlaskサーバーを使用しています。いくつかのテンプレートは独自のJavaScriptスクリプトを使用しています。 これらのスクリプトの1つは、ページにsvgを生成します。この機能は、サーバーによって生成された画像を必要とします。スクリプトにフラスコパラメータを知らせる方法は?
テンプレート(myTemplate.html):
{% extends "layout.html" %}
{% block body %}
<div id="graph">
<img src="/picture/{{ datasetName }}"></img>
</div>
<script src="script.js"></script>
{% endblock %}
ジャバスクリプト(script.js):
var graph = d3.select("#graph");
var svg = graph.append("svg") //this generates a <svg> in the <div>, it's d3js syntax.
.attr("width",window.innerWidth)
.attr("height",window.innerHeight)
.append("g");
フラスコサーバ(ここ
は今のところ存在するものの簡易版でありますserver.py):
from flask import *
@app.route('/', methods=['GET'])
def foo():
return render_template('myTemplate.html')
@app.route('/picture/<datasetName>', methods=['GET'])
def picture(datasetName):
img = (...) #some function to get my picture
return send_file(img.to_bytesio(), mimetype='image/svg', cache_timeout=0)
私の問題は、javascriptで画像を使用できるようにすることです(svgをナビゲートするときに移動するsvgの背景として設定する)が、現在はそれを取得するためのクリーンな方法はありません。私はスクリプトをHTMLページに移すことができましたが、私のプロジェクトはかなり大きく、私はそれを避けたいと思います。
進歩するためのクリーンな方法は何でしょうか?
実際には、私がズームインしたりズームアウトしたりするときに、バックグラウンドイメージをズームインして出力したいので、最後のオプションだけが動作します。あなたが言ったように、「datasetNameの値が何であるかは、あなたのテンプレートからあなたのJSに通信するという問題があります。これはまさに私が最初にやっておかなければならない問題です。 –