django中无法显示pyechart组件(tab/page等)的低级解决方法

非常奇怪的问题,render成单独的html文件可以正常显示,插入到django项目中却不行,于是捣鼓出了一个解决办法,没有找到原因,猜测是jscode的相关问题。

view.py相关代码

...
chart = (Bar()
        .add_xaxis(sub_er)
        .add_yaxis("", submit_day,color='purple')
        .set_global_opts(title_opts=opts.TitleOpts(title="提交时间"))
tab=Tab()
tab.add(chart=chart,tab_name='chart1')
tab.render_embed()
return render(request, 'data_chart.html', locals())

data.html

        <body>
                            {{ tab|safe  }}
         <body>

没有报错但是页面为空白,同时使用tab.render()查看渲染的出单独html显示正常,于是将相关的html代码复制进template中的data_chart.html,发现有效,于是将渲染得到的html进行文本处理后safe过滤器显示到页面上。

本段脚本需要手动复制进data_chart.html的头部,其余复制body标签内的内容即可

<script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>

需要的如下图django中无法显示pyechart组件(tab/page等)的低级解决方法
改进后代码:

from bs4 import BeautifulSoup
tab=Tab()
tab.add(chart=chart,tab_name='chart1')
# tab.render_embed()
filepath=tab.render('tmp1.html') #html地址,可以设置到临时文件夹定期清理
with open(filepath,encoding='utf=8') as file:
    html=file.read()
    soup = BeautifulSoup(html,from_encoding='utf-8')
    body=str(soup.find('body'))
os.remove(filepath) #删除临时的html文件

ps:django+pyechart的快速入手
https://pyecharts.org/#/zh-cn/web_django?id=django-%e6%a8%a1%e6%9d%bf%e6%b8%b2%e6%9f%93

边用边学ing

上一篇:Filebeat自动关闭问题解决


下一篇:Java多线程19-生产者消费者问题