Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要使用django cron作业将chart.js图表保存到映像吗_Django_Chart.js - Fatal编程技术网

要使用django cron作业将chart.js图表保存到映像吗

要使用django cron作业将chart.js图表保存到映像吗,django,chart.js,Django,Chart.js,我想将chart.js canvas HTML5标记图表保存到一个图像中,使用Django进行cron/batch作业。一定要让我知道是否有,因为我已经搜索了很多,但没有任何这样的库或包我找到 这样做的目的是将图像显示为图表而不是画布标记,因为在iPhone safari浏览器中显示图表时,由于内存问题,我们会遇到问题。有几种方法可以从Python中的chart.js图表生成图像 使用Chart.js API生成图表的图像,并将其发送到服务器以通过电子邮件发送。此解决方案要求客户端在发送电子邮件

我想将chart.js canvas HTML5标记图表保存到一个图像中,使用Django进行cron/batch作业。一定要让我知道是否有,因为我已经搜索了很多,但没有任何这样的库或包我找到


这样做的目的是将图像显示为图表而不是画布标记,因为在iPhone safari浏览器中显示图表时,由于内存问题,我们会遇到问题。

有几种方法可以从Python中的chart.js图表生成图像

  • 使用Chart.js API生成图表的图像,并将其发送到服务器以通过电子邮件发送。此解决方案要求客户端在发送电子邮件之前加载每个图表(不能仅在Django中完成)

  • Use是的Python驱动程序,是一种无头浏览器。在这种情况下,您可以加载包含图表的页面,然后对其进行屏幕截图:

  • browser=等待启动()
    page=wait browser.newPage()
    等待页面。转到('http://example.com/path/to/chart')
    等待页面。屏幕截图({'path':'chart.png'})
    等待浏览器关闭()
    
    这应该可以很好地工作,但这是一个有点重的解决方案,并且需要在web服务器上本地渲染,除非您设置了一些辅助基础结构

  • 使用类似web服务的方式为您处理渲染(请注意,我构建了此服务,但它是自托管的,并且可以自托管)。这通过获取Chart.js配置并将其发送到web服务来实现:
  • 导入json
    从urllib.parse导入引号
    导入请求
    #设置chart.js配置。这可以是字符串或python dict。
    图表配置={
    'type':'bar',
    “数据”:{
    “标签”:[“第1周”、“第2周”、“第3周”、“第4周”],
    “数据集”:[{
    “标签”:“转发”,
    “数据”:[12,5,40,5]
    }, {
    “标签”:“喜欢”,
    “数据”:[80,42,215,30]
    }]
    }
    }))
    #将python dict转换为字符串并对其进行URL编码
    encoded_config=quote(json.dumps(chart_config))
    #下载图表
    图表url=f'https://quickchart.io/chart?c={encoded_config}'
    f=requests.get(图表url,流=True)
    如果r.status_code==200:
    将open('/tmp/chart.png',wb')作为f:
    对于r中的块:
    f、 写入(块)
    
    还有一个您可以使用的