python - 使用 Pyramid 框架从 csv 数据创建包含图表或表格的网页

标签 python charts pyramid deform

我有 csv 格式的数据,我想创建一个包含图表或表格的网页。我正在使用 Pyramid Framework、chameleon 和 Deform_bootstrap。

我是网络开发新手,似乎没有任何相关教程。谁能指出我正确的方向?

最佳答案

在不了解更多细节的情况下,很难说。但是,基本上您需要在配置中注册一个路由(在根 __init__.py 文件中),一个可调用 View (这可以只是一个方法)来读取文件并将数据传递给渲染器和变色龙模板来渲染数据。

首先在你的configuration中设置一条路线。例如,要为表格添加一条路线,为图表添加一条路线,您可以在 __init__.py 文件中执行类似的操作。

config.add_route('show_table', '/table')
config.add_route('show_chart', '/chart')

名称和路径的选择当然取决于您。

然后,您需要为每个路由实现一个可调用的 View 。这些将读取文件并返回包含数据的字典。他们还将数据绑定(bind)到特定的渲染器,在您的例子中是变色龙模板。这样的事情可能适合您的情况,即两条路线都需要相同的数据。

from pyramid.view import view_config

def read_file():
    """read the file and return the data in a suitable format"""
    return [1,4,2,4,56,7,45,3]

@view_config(route_name='show_table', renderer='templates/table.pt')
def table_view(request):
    data = read_file()
    return {'data': data}

@view_config(route_name='show_chart', renderer='templates/chart.pt')
def chart_view(request):
    data = read_file()
    return {'data': data}

最后,您需要实现模板文件。这些将根据您的需要而有所不同。

<!DOCTYPE html>
<html xmlns:tal="http://xml.zope.org/namespaces/tal">

<head>
</head>

<body>
    <table>
        <tr><th>Data</th></tr>
        <tr tal:repeat="datum data"><td>${datum}</td></tr>
    </table>
</body>

</html>

为了制作图表,我使用 d3.js,但这是我认为的另一个问题。这是一个基于 this tutorial 中的第一步的简单示例。首先,您的模板需要使数据可供 JavaScript 使用。一种方法是将数据写入 JavaScript 变量。这可以工作,但有点困惑 - 请参阅 this question用于替代方法。在真实的应用程序中,您可能需要使用 ajax,因此您需要编写 url 来访问此处的数据。

<!DOCTYPE html>
<html xmlns:tal="http://xml.zope.org/namespaces/tal">

<head>
   <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>

<body>
    <div class="chart"></div>
    <script type="text/javascript">
       var data = ${data};
       var x = d3.scale.linear()
         .domain([0, d3.max(data)])
         .range([0, 420]);

       d3.select(".chart")
        .selectAll("div").data(data)
        .enter().append("div")
          .style("width", function(d) { return x(d) + "px"; })
          .text(function(d) { return d; });
    </script>
</body>

</html>

这应该可行,但未经测试,如果您有任何问题,请告诉我,我会在有时间时更新它。

关于python - 使用 Pyramid 框架从 csv 数据创建包含图表或表格的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920692/

相关文章:

xml - PyXB 和 python 框架

javascript - 有没有人有使用 Backbone.js 和 Pylons/Pyramid 的经验?有什么 sample 要看吗?

javascript - 如何在 ReactJS 的 Leaflet 图表中为数组中的标记添加多个坐标

python - Pyramid 和 .ini 配置

python - urllib2 HTTPError : HTTP Error 414: Request-URI Too Large

python - "from pylab import *"返回 NoneType 对象不可迭代

javascript - Google 图表不显示趋势线,不显示错误

html - 带 Angular 边缘的自定义图表设计

python - 在 Django 中只允许模型的一个实例

Python JSON 输入顺序