【问题标题】:Django: create csv file and load it in view using JavascriptDjango:创建 csv 文件并使用 Javascript 将其加载到视图中
【发布时间】:2014-02-03 20:16:48
【问题描述】:

我正在开发一个网络应用程序,它可以创建一些数据的可视化。
数据来自第三方,使用他们的 API,并导入我的数据库。导入将偶尔进行,因此我的数据库将是相当静态的。

可视化将在 JavaScript 中动态创建,使用 d3。 在考虑如何将数据从服务器传递(和格式化)到客户端时,我想我可以将其导出为 .csv 文件,然后从 javascript 加载它(d3 具有内置的 csv 解析器)。
这样 csv 文件就兼作缓存系统:它会重新生成(并因此查询数据库),前提是它早于一周。

我的问题是:我应该在哪里以及如何保存生成的 csv 文件? STATIC_ROOTMEDIA_ROOT,另一个硬链接目录? 另外,你认为 csv 系统是个好主意吗?

对不起,如果这些问题看起来毫无用处,我在不到一周前就开始学习 django 和 d3。

【问题讨论】:

    标签: python django csv web-applications d3.js


    【解决方案1】:

    您可以将文件放在 STATIC_ROOT 中,这将是一个合适的位置。

    另外两个想法:

    1. 您是否考虑过在写入 csv 文件时对其进行锁定/互斥?或者,如果请求在不幸的时刻到来,如果客户可能会得到半个 CSV 文件,这不是问题吗?

    2. CSV 不是将数据系列传输到 JS 客户端的标准方式。我可能会将 JSON 数组写入文件。

    【讨论】:

      【解决方案2】:

      在 Django 中,我们通常将静态文件——我们网站用来渲染内容(如 CSS、JS)的文件存储在 STATIC_ROOT 下。 MEDIA_ROOT 下的文件通常是 Django 让网络服务器提供服务的媒体文件,例如图像和视频。我会将可视化数据文件存储在我的应用程序内的data 目录下(位于主 django 项目目录下)。 article 是构建 django 项目的好资源。

      至于为驱动可视化的数据文件使用 CSV 文件,我更喜欢将您的数据导出为 JSON,因为它是一种更紧凑的表示法。另外,我假设在 JavaScript 中解码 JSON 会比 CSV 更快。虽然它取决于其他参数,例如文件中数据的大小和结构。

      【讨论】:

      • 如何引用数据目录,只需从我的 html/js 文件中硬编码 ../data/something.csv ? Django 不提供静态文件吗?
      • 我建议使用 pythons os 模块创建一个 PROJ_ROOT、DATA_ROOT(相对于 PROJECT_ROOT)变量。这样您就可以避免 Unix 和 Windows 的路径分隔符符号的差异。
      • 由于字段名称仅在标题中出现一次,因此 csv 是否不比 json 更紧凑? d3 有很好的处理 csv 的工具,它已成为我工作的首选格式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多