我正在使用Flask,但这可能适用于许多类似的框架。
例如,我构建了一个熊猫数据框
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
模板analysis.html看起来像
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data}}
{% endblock %}
这有效,但是输出看起来很糟糕。它不使用换行符等。我玩过data.to_html()
和data.to_string()
显示框架的最简单方法是什么?
以下应该起作用:
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x.to_html())
# ^^^^^^^^^
检查the documentation是否有CSS样式等其他选项。
另外,您需要像这样调整模板:
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data | safe}}
{% endblock %}
为了告诉Jinja您正在传递标记。感谢@SeanVieira的提示。
好吧,现在通过结合我在这里得到的提示,我已经获得了一些非常不错的结果。在实际的Python查看器中,我使用
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
例如我将完整的数据框发送到html模板。我的html模板基于引导程序。因此,我可以简单地写[]
{% extends "base.html" %} {% block content %} <h1>{{name}}</h1> {{ data.to_html(classes="table table-striped") | safe}} {% endblock %}
[bootstrap还有很多其他选项,请在此处查看:http://getbootstrap.com/css/#tables
Base.html本质上是从此处复制的http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xii-facelift
下一个问题显然是如何绘制这样的框架。有人对Bokeh有任何经验吗?
谢谢你们马特和肖恩。
托马斯
您可以使用enaml-web显示熊猫数据框并与之交互。