Flask dynamic graphviz和SVG示例
我正在尝试创建一个Graphviz图像,但不是保存图像并加载到网页中,而是将其作为SVG传递 这是一种工作方式,以下是示例:Flask dynamic graphviz和SVG示例,flask,graphviz,Flask,Graphviz,我正在尝试创建一个Graphviz图像,但不是保存图像并加载到网页中,而是将其作为SVG传递 这是一种工作方式,以下是示例: from flask import Flask from graphviz import Graph app = Flask(__name__) @app.route('/svgtest') def svgtest(): chart_data = Graph() chart_data.node('H', 'Hello') chart_data.nod
from flask import Flask
from graphviz import Graph
app = Flask(__name__)
@app.route('/svgtest')
def svgtest():
chart_data = Graph()
chart_data.node('H', 'Hello')
chart_data.node('W', 'World')
chart_data.edge('H', 'W')
chart_output = chart_data.pipe(format='svg')
return render_template('svgtest.html', chart_output=chart_output)
在我的HTML页面中,我有
<embed type="image/svg+xml" src={{ chart_output|safe }} />
然而,输出是不正确的
任何帮助都会很好,我开始自言自语,即使这样也没有帮助
谢谢。标签的
src
属性应该包含要嵌入内容的url,而不是内容本身:
HTML
元素在指定的位置嵌入外部内容
文件中的要点。此内容由外部供应商提供
应用程序
src
正在嵌入的资源的URL
如果要使用embed
,则应在其自己的url下提供svg(无html模板),并在embed
标记的src
属性中使用该url
或者,您可以直接在html模板中插入svg,而无需使用
embed
标记。您可以像这样使用svg:
{{ chart_output|safe }}
<img src="data:image/png;base64,{{chart_output|safe}}" />
此外,您还可以使用png格式:
@app.route('/')
def svgtest():
chart_data = Graph()
chart_data.node('H', 'Hello')
chart_data.node('W', 'World')
chart_data.edge('H', 'W')
chart_output = chart_data.pipe(format='png')
chart_output = base64.b64encode(chart_output).decode('utf-8')
return render_template('svgtest.html', chart_output=chart_output)
html是这样的:
{{ chart_output|safe }}
<img src="data:image/png;base64,{{chart_output|safe}}" />
快乐编码 这应该行得通。我做了一些修改
from flask import Flask
from graphviz import Graph
app = Flask(__name__)
@app.route('/svgtest')
def svgtest():
chart_data = Graph()
chart_data.node('H', 'Hello')
chart_data.node('W', 'World')
chart_data.edge('H', 'W')
chart_output = chart_data.pipe(format='svg').encode("utf-8")
return render_template('svgtest.html', chart_output=chart_output)
修改后的html将是:
{{chart_output|safe}}
谢谢你的回复,你能给我举个例子吗?或者我的例子,我想我明白你的意思,但我还是不能100%确定